【发布时间】:2018-01-25 03:29:38
【问题描述】:
我了解generator 一次生成一次值,这可以节省大量内存,而不像list 将所有值存储在内存中。
我想知道python,yield 如何知道在迭代过程中应该返回哪个值而不将所有数据一次存储在内存中?
据我了解,如果我想使用yield打印1 to 100,需要yield需要先知道或存储1 to 100,然后逐点移动返回值?
如果不是,那么yield如何一次返回一次值,而不将所有值存储在内存中?
【问题讨论】:
-
它在每个
yield处暂停函数,直到该值被某些东西消耗。您可以通过在生成器中添加一些print语句来观察它。 -
@SilvioMayolo 是不是和某种数据结构有关?
-
虽然不能保证生成器的实现,但协程将是一种相对简单的方法,并且肯定可以用于教学目的。