python - 如何避免列表理解中不必要的工作?

标签 python

我想像这样转换字符串:

“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/

相关文章:

python - Python 断言是拐杖吗?

python - Pyspark:从 pyspark 数据帧中删除 UTF 空字符

python - 为什么 Unicode '\u0332' 不会在空格 '\u0020' 下划线?

python - 如何在这段代码中连接列表和字符串?

Python,使用远程管理器和多重处理

python - 尝试解决将字符串转换为列表中的整数时遇到不同的错误

Python while/if 循环忽略条件

python - PyQt5:通过单击 QPushButton 画一条线

python - 使用 time.process_time()

python - .htaccess 在弹性 beantalk python 上的位置