Python中如何同时遍历两个等长可迭代对象实现同步迭代
解答
你写的for a,b,c,d,e,f in elem1 and elem2:无法实现预期效果。Python里and是逻辑运算符,只会返回参与运算的对象中最后一个布尔值为真的对象,不具备并行遍历的能力。
已知elem1和elem2长度完全一致的前提下,用内置zip()函数配对两个可迭代对象的同位置元素即可,正确写法如下:
for (a, b, c), (d, e, f) in zip(elem1, elem2): # a、b、c为elem1当前迭代位的三个值,d、e、f为elem2同迭代位的三个值 do whatever...
实现逻辑
zip(elem1, elem2)会按迭代顺序逐位匹配两个可迭代对象的元素,每一轮返回的格式为(elem1当前元素, elem2当前元素)- 由于elem1、elem2的单个元素本身就是三元组,分层解包后就能直接得到你需要的6个独立变量,完全匹配你要的遍历效果
- Python3环境下
zip返回惰性迭代器,不会一次性加载所有元素到内存,大体积可迭代对象使用也没有内存压力。
内容的提问来源于stack exchange,提问作者carbassot
相关产品推荐
相关产品推荐

