Kra*_*ken 5 python iterator generator python-3.x
在 Python 3 中,zip(*iterables)截至文档
返回元组的迭代器,其中第 i 个元组包含每个参数序列或可迭代对象中的第 i 个元素。当最短输入可迭代用完时,迭代器停止。
举个例子,我正在运行
for x in zip(a,b):
f(x)
Run Code Online (Sandbox Code Playgroud)
有没有办法找出哪个迭代器a或b导致 zip 迭代器停止?
假设这len()是不可靠的,并且迭代两者a并b检查它们的长度是不可行的。
我认为简有最好的答案。基本上,您想要单独处理 zip 的最后一次迭代。
import itertools as it
a = (x for x in range(5))
b = (x for x in range(3))
iterables = ((it.chain(g,[f"generator {i} was exhausted"]) for i,g in enumerate([a,b])))
for i, j in zip(*iterables):
print(i, j)
# 0 0
# 1 1
# 2 2
# 3 generator 1 was exhausted
Run Code Online (Sandbox Code Playgroud)