gpt4 book ai didi

python - 如何测量生成器序列的长度(list comp vs generator expression)

转载 作者:行者123 更新时间:2023-11-28 20:26:33 27 4
gpt4 key购买 nike

我有一个生成有限序列的生成器。确定这个序列的长度我尝试了这两种方法:

 seq_len = sum([1 for _ in euler14_seq(sv)])  # list comp

 seq_len = sum(1 for _ in euler14_seq(sv))    # generator expression

sv 是序列的常量起始值。

我原以为列表理解会更慢,而且生成器表达式更快,但结果恰恰相反。

我假设第一个会占用更多内存,因为它首先在内存中创建一个完整的列表——部分原因我也认为它会更慢。

我的问题:这个观察结果可以推广吗?这是由于在第二个语句和第一个语句中有两个生成器?

我看过这些 What's the shortest way to count the number of items in a generator/iterator? , Length of generator output , 和 Is there any built-in way to get the length of an iterable in python?并看到了一些其他测量序列长度的方法,但我特别好奇列表 comp 与生成器表达式的比较。

PS:当我决定解决 Euler Project #14 时出现了这个问题基于昨天在 SO 上提出的问题。

(顺便说一句,关于在不需要变量值的地方)。

这是在 Windows 7 64 位下使用 Python 2.7.2(32 位)完成的

最佳答案

在这台计算机上,生成器表达式在 100,000 到 1,000,000 之间变得更快

$ python -m timeit "sum(1 for x in xrange(100000))"
10 loops, best of 3: 34.8 msec per loop
$ python -m timeit "sum([1 for x in xrange(100000)])"
10 loops, best of 3: 20.8 msec per loop
$ python -m timeit "sum(1 for x in xrange(1000000))"
10 loops, best of 3: 315 msec per loop
$ python -m timeit "sum([1 for x in xrange(1000000)])"
10 loops, best of 3: 469 msec per loop

关于python - 如何测量生成器序列的长度(list comp vs generator expression),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11353874/

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