【python自学笔记】(五)yield+next的用法

  • Post author:
  • Post category:python



Python中的生成器类似于函数,除了不返回值并退出进程,生成器将暂停进程,保存下一次的状态。从代码角度来看,函数和生成器之间的最大区别是一个词:

return

更改为

yield



处理非常大的数据集合时,生成器变得非常有用,您不希望一次性存储在内存中。它对于处理极大甚至无限的系列也非常有用。


下面是如何使用生成器打印偶数的示例。一次打印所有偶数将花费无限的时间,但生成器允许进程暂停,并在需要时返回创建偶数。


要创建下一个连续的偶数,只需调用

next()

生成器对象,它将产生下一次迭代。之后

yield

被调用,一切都在生成功能的状态冻结,并返回值。当再次调用发生器时

next()

,它会

yield

从之前的停止位置向右拾取。

# Definition of the generator to produce even numbers.
def all_even():
    n = 0
    while True:
        yield n
        n += 2

my_gen = all_even()

# Generate the first 5 even numbers.
for i in range(5):
    print(next(my_gen))

# Now go and do some other processing.
do_something = 4
do_something += 3
print(do_something)

# Now go back to generating more even numbers.
for i in range(100):
    print(next(my_gen))

学自:优达学城:数据结构与算法



版权声明:本文为qq_30193419原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。