如何将列表中的字符串分离,并乘以一个数字。

3

我需要将一个列表中的每个项乘以4,并用逗号分隔。

我的代码如下:

conc = ['0.05 ml : 25 ml', '0.05 ml : 37.5 ml', '0.05 ml : 50 ml', '0.05 ml : 62.5 ml', '0.05 ml : 75 ml']
new_conc = [", ".join(i*4) for i in conc]
print(new_conc)

但是当我运行它时,我得到了每个符号用逗号分隔的结果。我需要的是用逗号分隔的显示表达式数量增加。

所以输出应该是:

['0.05毫升:25毫升','0.05毫升:25毫升','0.05毫升:25毫升','0.05毫升:25毫升','0.05毫升:37.5毫升','0.05毫升:37.5毫升','0.05毫升:37.5毫升','0.05毫升:37.5毫升','0.05毫升:50毫升','0.05毫升:50毫升','0.05毫升:50毫升','0.05毫升:50毫升','0.05毫升:62.5毫升','0.05毫升:62.5毫升','0.05毫升:62.5毫升','0.05毫升:62.5毫升','0.05毫升:75毫升','0.05毫升:75毫升','0.05毫升:75毫升','0.05毫升:75毫升']

我找到了this已回答的问题,但正如我之前提到的那样,我得到了由逗号分隔的符号


你的列表包含字符串而不是数字。当你在一个字符串上使用 * 时,它会将其重复多少次。 - Barmar
4个回答

3
你可以使用一个简单的 for 循环。
new_conc = []
for item in conc:
    new_conc.extend([item] * 4)

谢谢!您能否也看一下这个问题?链接 - PythonLover

1

欢迎来到StackOverFlow!正如其他用户正确指出的那样,您不能直接将一个字符串乘以另一个数字。您需要将数字部分与非数字部分“分离”,然后才能进行乘法运算,最后再将数字和字符串部分重新合并在一起。

conc = ['0.05 ml : 25 ml', '0.05 ml : 37.5 ml', '0.05 ml : 50 ml', '0.05 ml : 62.5 ml', '0.05 ml : 75 ml']

multiplied_conc = [': '.join([f"{float(p.split()[0])*4} {p.split()[1]}" for p in c.split(' : ')]) for c in conc]

print(multiplied_conc)

1
您可以尝试使用双重循环:
conc = ['0.05 ml : 25 ml', '0.05 ml : 37.5 ml', '0.05 ml : 50 ml', '0.05 ml : 62.5 ml', '0.05 ml : 75 ml']

out = []
for item in conc:
    for _ in range(4):
        out.append(item)
print(out)

或者一行代码:

out = [item for item in conc for _ in range(4)]

或者(如果您在输出中所述的顺序不重要):
out = conc * 4

0

好的,当我绝望地寻找答案并发布了这个问题时,我发现this已经回答了这个问题。:)

所以解决我的问题的方法可能是:

b = [4, 4, 4, 4]
c = sum([[s] * n for s, n in zip(conc, b)], [])
print(c)

但是,如果你们有更好的解决方案,我很乐意听取!


如果总是4,你不需要b列表。只需使用[s] * 4 - Barmar
谢谢!我对Python还是很新,虽然我花了很多时间学习它,但有时仍会困惑于一些简单的事情 :) 谢谢! - PythonLover

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接