gpt4 book ai didi

Python 3.x 列表推导 VS 元组生成器

转载 作者:行者123 更新时间:2023-12-05 00:51:50 24 4
gpt4 key购买 nike

是否有任何我想使用的内存、速度或其他原因:

tuple(i for i in range(5000))

代替:
[i for i in range(5000)]

如果我不介意元组的不变性

最佳答案

基本上,列表理解比生成器表达式更快,原因是它的迭代在 C 中执行(阅读@Veedrac 的评论了解原因)。但是应该在元组中使用生成器表达式的唯一原因是您想对您的项目执行一些操作和/或过滤它们,更重要的是您想要一个元组(因为不变性及其对可变对象的好处)。

毕竟你可以随时timeit你的代码:

In [10]: %timeit tuple(i for i in range(5000))
1000 loops, best of 3: 325 µs per loop

In [11]: %timeit [i for i in range(5000)]
1000 loops, best of 3: 199 µs per loop

另请注意,正如我所提到的,如果您想使用推导式,您必须对您的项目执行操作,否则您可以直接在迭代器上调用该函数,这会更快:
In [12]: %timeit list(range(5000))
10000 loops, best of 3: 98.3 µs per loop

关于Python 3.x 列表推导 VS 元组生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43808180/

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