Yuh*_*ang 0 python list generator python-3.x
例子:
from timeit import timeit
print(timeit("5 in [i for i in range(0, 100)]"))
print(timeit("5 in map(int, range(0, 100))"))
Run Code Online (Sandbox Code Playgroud)
这是结果:
3.771566713000084
0.9066896029999043
Run Code Online (Sandbox Code Playgroud)
python 3.8.5(我也认为这没有提到python版本^_^)
在in上map(这是一个迭代,而不是一个发电机,从技术上讲,发电机是使用函数yield或发电机表达式,而且他们更广泛的类的迭代器的子集)的短路,只要它知道的结果是True,使它实际上只生成并检查六个值,然后立即返回True。该list理解,相反,必须产生整个list检查它们中的任何前100种元素的。
如果您的测试是针对不在所讨论的可迭代对象中的元素,则map获胜(如果有的话)(毫无意义的调用会int损害它,性能方面)会更小,但是当可迭代对象包含该元素时,它是在可迭代的早期,即使每个元素的生产成本更高,短路也明显更快,因为它产生的元素少得多。
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |