我知道生成器比迭代器更快.我也明白可以使用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
Run Code Online (Sandbox Code Playgroud)
这只是结果的一个例子:
myIter took 0.09234782
myGen(n) took 0.017847266
Run Code Online (Sandbox Code Playgroud)
因为这使用for循环语法,所以我不明白它是如何比迭代器更快.这个生成器使用迭代器,因为"for"循环是使用迭代器实现的.如果你计算时间,发电机一直更快.当生成器使用迭代器时,为什么会这样?
谢谢.