最近有人问我,iterator、list comprehension、iter(list comprehension) 和 中哪个最快? >发电机。 然后制作如下简单的代码。
n = 1000000
iter_a = iter(range(n))
list_comp_a = [i for i in range(n)]
iter_list_comp_a = iter([i for i in range(n)])
gene_a = (i for i in range(n))
import time
import numpy as np
for xs in [iter_a, list_comp_a, iter_list_comp_a, gene_a]:
start = time.time()
np.sum(xs)
end = time.time()
print((end-start)*100)
结果如下。
0.04439353942871094 # iterator
9.257078170776367 # list_comprehension
0.006318092346191406 # iterator of list_comprehension
7.491207122802734 # generator
发电机比其他东西慢得多。 而且不知道什么时候有用?
请您参考如下方法:
生成器 不会一次性将所有元素存储在内存中。它们一次yield一个,这种行为使它们的内存效率更高。因此,您可以在内存受限时使用它们。
