我想像这样转换字符串:
“1.2 1.5, 3.2 1.9, 4.4 4.1”
进入
[(1.2 1.5), (3.2 1.9), (4.4 4.1)]
我有以下算法:
[(float(x.split()[0]), float(x.split()[1])) for x in s.split(',')]
如何只做一个 x.split()
而不是两个?
最佳答案
假设您的意思是 float 元组列表(您的表示中缺少逗号),您可以使用 map
来转换单个 .split()
而不是您想摆脱的重复。
s = "1.2 1.5, 3.2 1.9, 4.4 4.1"
[tuple(map(float, x.split())) for x in s.split(',')]
# [(1.2, 1.5), (3.2, 1.9), (4.4, 4.1)]
如果您想使用生成器而不是 map
-
[tuple(float(y) for y in x.split()) for x in s.split(',')]
您可以根据需要将 tuple
替换为 list
。
关于python - 如何避免列表理解中不必要的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45803173/