为什么以下 Python 代码会引发错误
TypeError: type object argument after * must be a sequence, not generator
,而如果我在生成器 f 中注释第一行(无用),一切正常?
from itertools import izip
def z():
for _ in range(10):
yield _
def f(z):
for _ in z: pass # if I comment this line it works! (??)
for x in range(10):
yield (x,10*x,100*x,1000*x)
iterators = izip(*f(z))
for it in iterators:
print list(it)
注意我实际上想要做的是,使用单个生成器返回多个迭代器(我将作为参数传递给生成器的数量)。我发现这样做的唯一方法是产生元组并在它们上使用 izip() - 对我来说是黑魔法。