我正在尝试将用破折号分隔的数字与另一个数字相乘。如何有效地做到这一点?
我尝试使用strip,但是代码变得复杂。
例如:
a = '1-2,3-4,4-5'
b = '3.0'
因此,如果您将变量“ a”的第一个值(即“ 1-2”)作为参数,则应将“-”破折号后的数字乘以“ b”变量值,结果应类似于1-2 * 3.0 = 1-6.0
我的结果应如下所示:
res = '1-6.0,3-12.0,4-15.0'
split()
是你的朋友在这里。首先,您需要将字符串分成几对:
pairs = a.split(',')
现在,您将拥有['1-2', '3-4', '4-5']
。
现在继续拆分这些对:
for pair in pairs:
x, y = pair.split('-')
现在,它y
仍将是一个字符串,因此在进行多次运算之前,您需要使用int(y)将其解析为一个int。由于b
是字符串,因此您也将需要float(b)
(或仅从头开始b = 3.0
。
因此,您可以将其添加到上面的外观中
for pair in pairs:
x, y = pair.split('-')
y = int(y)
好的,所以现在您需要存储结果。在循环之前创建一个空列表来存储新对:
multiplied_pairs = []
for pair in pairs:
x, y = pair.split('-')
y = int(y)
multiplied_pairs.append('{}-{}'.format(x, y * float(b)))
最后,使用join
来重新创建新的字符串,其结果为:
print(','.join(multiplied_pairs))
放在一起,您将拥有:
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))
现在进行奖金回合,如果您想使用一些生成器表达式一次完成所有操作:
print(','.join(
'{}-{}'.format(x, int(y) * float(b))
for x, y in (
pair.split('-') for pair in a.split(',')
)
))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句