1

izipドキュメントからの「同等のコード」を理解しようとしています。

def izip(*iterables):
    # izip('ABCD', 'xy') --> Ax By
    iterators = map(iter, iterables)
    while iterators:
        yield tuple(map(next, iterators))

iteratorsは空でないリストなので、これは無限ループを生成するべきではありませんか? また、関数の一番下に
入れようとしましたが、実行されませんでした。print iteratorsなんで?

4

1 に答える 1

3

イテレータが使い果たされると、呼び出されたStopIterationときに発生します。next()

したがって、は呼び出し元に例外をtuple(map(next, iterators))伝達しStopIteration、無限ループを中断します。

于 2013-08-31T19:57:05.357 に答える