我偶然发现了这段代码pymotw.com https://pymotw.com/3/itertools/在合并和分裂部分。
from itertools import *
def make_iterables_to_chain():
yield [1, 2, 3]
yield ['a', 'b', 'c']
for i in chain.from_iterable(make_iterables_to_chain()):
print(i, end=' ')
print()
我无法理解 make_iterables_to_chain() 是如何工作的。它包含两个yield语句,它是如何工作的?
我知道发电机是如何工作的,但那里只有一个yield陈述。
请帮助!
同样的方法单yield
works.
你可以有任意多个yield
s 如你所愿在发电机中,当__next__
被调用时,它将执行直到遇到下一个yield。然后,您返回生成的表达式,并且生成器暂停,直到它__next__
方法被再次调用。
运行几个next
调用生成器来查看:
>>> g = make_iterables_to_chain() # get generator
>>> next(g) # start generator, go to first yield, get result
[1, 2, 3]
>>> next(g) # resume generator, go to second yield, get result
['a', 'b', 'c']
>>> # next(g) raises Exception since no more yields are found
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)