我在 Windows 上使用 Python 3.3.1 64 位和这个代码片段:
len ([None for n in range (1, 1000000) if n%3 == 1])
与此相比,执行时间为 136 毫秒:
sum (1 for n in range (1, 1000000) if n%3 == 1)
执行时间为 146 毫秒。在这种情况下,生成器表达式不应该更快或与列表理解的速度相同吗?
我引用 Guido van Rossum从 List Comprehensions 到 Generator Expressions:
...Python 3 中的列表推导和生成器表达式实际上都比 Python 2 中的要快!(并且两者之间不再存在速度差异。)
编辑:
我用 测量了时间timeit
。我知道这不是很准确,但我只关心这里的相对速度,当我用不同的迭代次数进行测试时,我的列表理解版本的时间一直在缩短。