如何分隔列表中的字符串并乘以数字

问题描述 投票:0回答:4

我需要一个列表,将每个项目乘以 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)

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

所以输出应该是:

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

我发现这个回答了问题,但正如我已经提到的,我得到了单独的符号,用逗号分隔。

python string list separator
4个回答
3
投票

您可以使用简单的

for
循环。

new_conc = []
for item in conc:
    new_conc.extend([item] * 4)

1
投票

你可以尝试双for循环:

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

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']

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

print(multiplied_conc)

0
投票

好吧,当我绝望地找不到答案并发布这个问题时,我发现this回答了问题。 :)

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

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

但是,如果你们知道更好的解决方案,我会很高兴听到它!

© www.soinside.com 2019 - 2024. All rights reserved.