itertools
Pythonのジェネレーターをよりよく理解するために、モジュールに機能を実装しようとしていますが、次の問題が発生しizip
ます。
def izip(*iterables):
its = tuple(iter(it) for it in iterables)
while True:
yield tuple(next(it) for it in its) # ERROR
# yield tuple(map(next, its)) # OK
私のコードはERROR行を使用しており、リファレンス実装(マニュアルに記載されています)は、他の小さな違いを考慮せずにOK行を使用しています。このスニペットで:
for x in izip([1, 2, 3], (4, 5)):
print x
私のコード出力:
(1, 4)
(2, 5)
(3,)
()
()
... # indefinite ()
、期待される出力は次のとおりです。
(1, 4)
(2, 5)
私のコードの何が問題になっていますか?