Python 如何将由破折号分隔的数字相乘'-';用另一个号码?

Python 如何将由破折号分隔的数字相乘'-';用另一个号码?,python,python-3.x,Python,Python 3.x,我试图用另一个数字乘以由破折号分隔的数字。如何以有效的方式实现这一点 我尝试使用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' 您可以拆分字符串,对项目进行算术运算,然后将项目合并回: ','.join('%s-%.1f' % (i, float(b

我试图用另一个数字乘以由破折号分隔的数字。如何以有效的方式实现这一点

我尝试使用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'

您可以拆分字符串,对项目进行算术运算,然后将项目合并回:

','.join('%s-%.1f' % (i, float(b) * int(n)) for p in a.split(',') for i, n in (p.split('-'),))
这将返回:

1-6.0,3-12.0,4-15.0

您可以拆分字符串,对项目进行算术运算,然后将项目合并回:

','.join('%s-%.1f' % (i, float(b) * int(n)) for p in a.split(',') for i, n in (p.split('-'),))
这将返回:

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(',')
    )
))
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(',')
    )
))