我需要一个列表,将每个项目乘以 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']
我发现这个回答了问题,但正如我已经提到的,我得到了单独的符号,用逗号分隔。
您可以使用简单的
for
循环。
new_conc = []
for item in conc:
new_conc.extend([item] * 4)
你可以尝试双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
你不能直接将字符串相乘,你需要将数字部分与非数字部分“分离”,然后你可以执行乘法,最后重新连接数字和字符串部分。
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)
好吧,当我绝望地找不到答案并发布这个问题时,我发现this回答了问题。 :)
所以我的问题的解决方案可以是:
b = [4, 4, 4, 4]
c = sum([[s] * n for s, n in zip(conc, b)], [])
print(c)
但是,如果你们知道更好的解决方案,我会很高兴听到它!