gpt4 book ai didi

python - 为什么 izip() 的这个实现不起作用?

转载 作者:太空狗 更新时间:2023-10-29 20:50:26 25 4
gpt4 key购买 nike

为了更好地理解 Python 的生成器,我尝试在 itertools 模块中实现功能,但遇到了 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)

请问我的代码有什么问题?

最佳答案

您的实现不起作用的原因是 StopIteration 由一个可迭代对象耗尽引起的异常被抛出在生成器表达式中。它只会终止生成器表达式,而不是封闭的生成器函数。

关于python - 为什么 izip() 的这个实现不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10108423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com