gpt4 book ai didi

python - 如果你不分配它,列表理解的效率如何?

转载 作者:太空狗 更新时间:2023-10-30 00:45:09 25 4
gpt4 key购买 nike

In this question ,我正在与一位评论者争论

for t in threads:
t.join()

会比

[t.join() for t in threads]

将“滥用理解”的问题放在一边 - 我倾向于同意,但我想要一个单行:我的版本(第二个)真的(低)效率如何? Python 是否总是/在我的情况下具体化列表推导式,还是在内部使用生成器?

map(lambda t: t.join(), threads) 会更有效率吗?或者是否有另一种方法将函数应用于列表 threads 中的每个元素?

最佳答案

列表推导式总是生成一个列表对象,在本例中带有所有t.join() 调用的返回值。因此,Python 会为您生成长度为 len(threads)None 值列表。 Python 永远不会尝试优化列表对象的创建。

使用 map() 也没有任何效率,因为您使用 lambda 添加了额外的堆栈推送。只需坚持使用显式 for 循环即可。

实际上,对于一系列线程连接而言,没有意义在这里尝试进行微优化。您正在损害一段非关键代码的可读性。

换句话说,我完全同意评论者的观点。不要仅仅为了副作用而使用列表推导式或 map(),这样可以避免您不得不点击 ENTER 并创建两行代码。

引用Zen of Python :

  • Readability counts.

关于python - 如果你不分配它,列表理解的效率如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21428602/

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