我正在阅读e-satisf'回答"yield"关键字在Python中的作用?.他说:
这些迭代很方便,因为你可以根据自己的意愿阅读它们,但是你将所有的值存储在内存中,当你有很多值时,这并不总是你想要的
我真的不同意.但我不能在那里发表评论.
然后是这个问题:Python的迭代是否真的将所有值存储在内存中?
我曾经这么认为.但是自从我昨天看到Python的详细文档以来,我改变了我的观点.
>>> import sys
>>> def gen():
... n = 0
... while n < 10:
... yield n
... n += 1
...
>>> a = [0,1,2,3,4,5,6,7,8,9]
>>> b = range(10) # b is a range object, which is a iterable
>>> c = gen(10) # c is a iterator, which is a iterable too
>>> sys.getsizeof(a)
144
>>> sys.getsizeof(b)
48
>>> sys.getsizeof(c)
72
>>> B = list(b)
>>> C = list(c)
>>> …Run Code Online (Sandbox Code Playgroud)