小编kis*_*ssg的帖子

Python的迭代是否真的将所有值存储在内存中?

我正在阅读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)

python iterable

2
推荐指数
1
解决办法
124
查看次数

标签 统计

iterable ×1

python ×1