Python中zip对象多次迭代为空的原因及适配多次使用的替代方案
问题1:对zip的理解是否正确
你的理解不正确。Python 3中zip()返回的是一次性迭代器,而非持久化的存储容器。迭代器遍历完成后指针会停在末尾,再次遍历不会自动重置,因此第二次及之后循环访问a时会直接得到空结果。
问题2:适配场景的单行替代方案
有两种常用的单行实现可以满足多次遍历的需求:
- 方案1:每次外层循环时重新生成zip迭代器,不需要提前定义变量
a,直接修改内层循环代码即可:for iteration in range(100): for i, j in zip(list_a, list_b): # do something - 方案2:提前将zip迭代器的结果转为可多次遍历的列表,原有循环逻辑不需要修改:
a = list(zip(list_a, list_b))
内容的提问来源于stack exchange,提问作者Caspertijmen1
相关产品推荐
相关产品推荐

