我想要一些发电机,这些发电机要比其他发电机好。
def gx():
for i in [1, 2, 3]:
yield i
def gy():
for i in [11, 12, 13]:
yield i
def gz():
"""this should defer to gx and gy to
generate [1, 2, 3, 11, 12, 13]"""
for i in gx(): yield i
for i in gy(): yield igz()中的显式循环是实现此目的的唯一方法吗,还是有更好的替代方案?
发布于 2012-02-29 23:51:53
在当前发布的Python版本中,显式循环是调用子生成器的唯一方法。(我假设您的示例只是一个示例--并不完全是您想要解决的问题。)
Python3.3将为此添加特殊的语法yield from:
def gz():
"""this should defer to gx and gy to
generate [1, 2, 3, 11, 12, 13]"""
yield from gx()
yield from gy()有关更多详细信息,请参阅PEP 380。
发布于 2012-02-29 23:51:05
使用itertools.chain
import itertools
gz = itertools.chain(gx(), gy())在chain的文档中,他们通过实现来描述它:
def chain(*iterables):
for it in iterables:
for element in it:
yield element您也可以从中获得灵感:)
https://stackoverflow.com/questions/9502242
复制相似问题