我理解生成器比迭代器更快。我也知道可以使用for
循环语法来实现生成器。例如:
import time
startT = time.time()
def myGen(n):
for i in range(n):
yield x
def myIter(n):
for i in range(n):
pass
def main():
n=100
startT=time.time()
myIter(n)
print 'myIter took ', time.time() - startT
startT=time.time()
myGen(n)
print 'myGen(n) took ', time.time() - startT
这只是结果的一个例子:
myIter took 0.09234782
myGen(n) took 0.017847266
由于这里使用了 for
循环语法,所以我不明白它为什么比迭代器更快。实际上,这个生成器使用了一个迭代器,因为 "for" 循环是通过迭代器实现的。如果你测试一下,你会发现这个生成器始终比迭代器更快。那么为什么呢?即使这个生成器也是在使用迭代器?
谢谢。
time.time()
不是一个准确的计时器。第三,生成器仅仅创建循环并进行一次迭代,而另一个函数则创建循环并 _遍历整个循环_。 - TigerhawkT3