nums = [1, 2, 3, 4, 5, 6] squares_it = (n ** 2 for n in nums) # squares_it 得到一个生成器,仅在调用时动态生成nums
的平方
squares_lst = [n ** 2 for n in nums] # squares_lst 一次性计算所有元素并生成一个列表并保存下来
所以,当您这样做时:
for n in squares_it:
print(n)
就像你在做:
for n in nums:
print(n ** 2)
但是当你这样做的时候:
for n in squares_lst:
print(n)
就像你在做:
squares_lst = []
for n in nums:
squares_lst.append(n ** 2)
for n in squares_lst:
print(n)
如果您不需要(或没有)列表 nums
,那么您可以使用以下方法节省更多空间:
squares_it = (n ** 2 for n in xrange(1, 7))
此外,生成器和迭代器可能会产生无限数量的元素。一个例子是 itertools.count()
产生 0, 1, 2, 3, ... 永无止境。
参考:https://www.coder.work/article/1278613
标签:nums,python,生成器,lst,内存,print,squares From: https://www.cnblogs.com/lucky815/p/17456658.html