python - Python zip():检查哪个迭代器用尽了
问题描述
在 Python 3 中,zip(*iterables)
截至文档
返回元组的迭代器,其中第 i 个元组包含来自每个参数序列或可迭代对象的第 i 个元素。当最短的输入迭代用完时,迭代器停止。
例如,我正在运行
for x in zip(a,b):
f(x)
有没有办法找出哪些迭代器,a
或者b
,导致了 zip 迭代器的停止?
假设这len()
不可靠并且迭代两者a
并b
检查它们的长度是不可行的。
解决方案
我认为 Jan 有最好的答案。基本上,您想分别处理来自 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
推荐阅读
- arrays - 使用方法 sequenceCheck(int[] arr) 编写一个类 SequenceCheck
- ios - CollectionView 单元格最初看起来太小,然后跳转到正确的大小
- react-native - 使用自定义数据创建深层链接 branch.io (react-native)
- php - Wordpress 自定义菜单在外观上不显示屏幕
- apache-kafka - 确保每个 Kafka 消费者具有不同/唯一的 group.id 来实现发布-订阅的策略
- javascript - TS2334 属性“长度”在“对象”类型上不存在。仅在应用启动时(ng-serve)
- node.js - 如何在 Loopback 4 身份验证策略中重定向?
- c# - 如何将鼠标单击事件处理程序添加到位图图像构造函数?
- django - Django - 在 ModelForm 的模板中显示用户下拉列表
- r - 预测循环参考方程组