如何在for循环中从不同列表中选取对应元素?
如何在for循环中同时遍历两个列表的对应元素?
看起来你是想让两个列表里的元素按位置一一对应输出,但嵌套循环的写法导致第二个列表被完整遍历了三次。咱们来改改代码:
先看你现在的代码:
list1 = ['a','b','c'] list2 = ['1','2','3'] for x in list1: print(x) for y in list2: print(y)
它的输出是:
a 1 2 3 b 1 2 3 c 1 2 3
而你想要的是:
a 1 b 2 c 3
解决这个问题最直接的方法就是用Python内置的zip()函数,它能把多个可迭代对象(比如你的两个列表)中对应位置的元素打包成元组,这样在循环里就能同时取出两个列表的对应元素了:
list1 = ['a','b','c'] list2 = ['1','2','3'] for x, y in zip(list1, list2): print(x, y)
运行这段代码就能得到你期望的输出啦。
小补充:如果你的两个列表长度不一样,zip()会自动以较短的列表长度为准截断;要是想保留所有元素(长度不足的用None填充),可以用itertools模块里的zip_longest(),不过你的例子里两个列表长度一致,用zip()就完全够用了。
内容的提问来源于stack exchange,提问作者elrich bachman
相关产品推荐
相关产品推荐

