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

当迭代器用尽时,它会StopIterationnext()被调用时引发。

因此,会将异常tuple(map(next, iterators))传播给调用者,从而中断无限循环。StopIteration

于 2013-08-31T19:57:05.357 回答