首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将短划线'-‘分隔的数字与另一个数字相乘?

如何将短划线'-‘分隔的数字与另一个数字相乘?
EN

Stack Overflow用户
提问于 2019-02-15 06:57:18
回答 2查看 147关注 0票数 0

我正试着把用短划线分隔的数字与另一个数字相乘。我如何才能以有效的方式实现这一点?

我尝试使用strip,但代码变得复杂。

例如:

代码语言:javascript
复制
a = '1-2,3-4,4-5'
b = '3.0'

因此,如果将变量'a‘作为第一个值,即'1-2',则'-’后的数字应乘以'b‘变量值,结果应为1-2*3.0 = 1-6.0

我的结果应该如下所示:

代码语言:javascript
复制
res = '1-6.0,3-12.0,4-15.0'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-15 07:06:53

split()是你的朋友。首先,您需要将字符串拆分成对:

代码语言:javascript
复制
pairs = a.split(',')

现在,您将拥有['1-2', '3-4', '4-5']

现在,继续拆分这些对:

代码语言:javascript
复制
for pair in pairs:
    x, y = pair.split('-')

现在,y仍然是一个字符串,所以在进行乘法运算之前,您需要使用int(y)将其解析为一个整数。因为b是一个字符串,所以您还需要float(b) (或者首先从b = 3.0开始。

因此您可以将其添加到上面的外观中

代码语言:javascript
复制
for pair in pairs:
    x, y = pair.split('-')
    y = int(y)

好的,现在你需要存储结果。在循环之前创建一个空列表来存储新的对:

代码语言:javascript
复制
multiplied_pairs = []
for pair in pairs:
    x, y = pair.split('-')
    y = int(y)
    multiplied_pairs.append('{}-{}'.format(x, y * float(b)))

最后,使用join重新创建新字符串,结果如下:

代码语言:javascript
复制
print(','.join(multiplied_pairs))

把所有这些放在一起,你就会得到:

代码语言:javascript
复制
pairs = a.split(',')
multiplied_pairs = []

for pair in pairs:
    x, y = pair.split('-')
    y = int(y)
    multiplied_pairs.append('{}-{}'.format(x, y * float(b)))

print(','.join(multiplied_pairs))

现在是额外的一轮,如果你想用一些生成器表达式一次完成这一切:

代码语言:javascript
复制
print(','.join(
    '{}-{}'.format(x, int(y) * float(b)) 
    for x, y in (
        pair.split('-') for pair in a.split(',')
    )
))
票数 1
EN

Stack Overflow用户

发布于 2019-02-15 07:06:09

您可以拆分字符串,对这些项进行算术运算,然后将这些项连接回去:

代码语言:javascript
复制
','.join('%s-%.1f' % (i, float(b) * int(n)) for p in a.split(',') for i, n in (p.split('-'),))

这将返回:

代码语言:javascript
复制
1-6.0,3-12.0,4-15.0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54700393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档