izip的示例代码是如何工作的?

2024-06-12 01:19:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从文档中理解^{}的“等效代码”。你知道吗

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

既然iterators是一个非空列表,这不应该产生一个无限循环吗?
我还尝试将print iterators放在函数的底部,但始终没有执行。为什么?你知道吗


Tags: 代码文档mapbydefaxyieldxy
1条回答
网友
1楼 · 发布于 2024-06-12 01:19:35

当迭代器耗尽时,当对其调用next()时,它将引发StopIteration。你知道吗

因此,tuple(map(next, iterators))将把StopIteration异常传播给调用方,从而中断无限循环。你知道吗

相关问题 更多 >