gpt4 book ai didi

python - 在 Python 3 Pythonic 中使用 map(...) (与循环相比)

转载 作者:太空宇宙 更新时间:2023-11-04 06:55:04 24 4
gpt4 key购买 nike

我想转换元组的字符串表示列表,例如:

["(279, 256000, '.m4a')", "(217, 256000, '.m4a')", "(174, 128000, '.mp3')"]

进入元组列表,例如:

[(279, 256000, '.m4a'), (217, 256000, '.m4a'), (174, 128000, '.mp3')]

这似乎是最简洁(和清晰)的方法

recs = ... # loaded from text file
data = map(eval, recs)

但是,我看到一个帖子Python course - lambda这似乎暗示 map() 可能不是好的 python 或者可能会被弃用。

替代方案似乎更冗长(因此不太清楚):

data = []
for r in recs:
data += [eval(r)]

哪个更pythonic?

最佳答案

map 在与命名函数一起使用时很好;当您将它与内联 lambda 一起使用时,列表理解或生成器表达式变得更清晰。另一方面,eval 并不是很好。考虑 ast.literal_eval相反。

import ast

data = map(ast.literal_eval, recs)

此外,map 返回一个可迭代对象(在 Python 3 中);如果你想要一个列表,你必须在结果上调用 list

data = list(map(ast.literal_eval, recs))

关于python - 在 Python 3 Pythonic 中使用 map(...) (与循环相比),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32317231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com