Python中如何用不同变量实现多列表并行遍历?
解决方法
要实现三个列表对应元素配对输出,直接用Python内置的zip()函数就能搞定,它会把多个可迭代对象的对应元素打包成元组,循环时可以一次取出每个列表的对应元素。
正确代码示例
listXYZ = ['X','Y', 'Z'] list123 = ['1','2','3'] listLetter= ['FF','GG','ZZ'] for x, y, z in zip(listXYZ, list123, listLetter): print(x, y, z)
输出结果
X 1 FF Y 2 GG Z 3 ZZ
原有代码的问题
你写的for list,x,y in listXYZ,list123,listLetter,本质是在迭代三个列表本身,而不是列表里的单个元素。第一次循环会把整个listXYZ赋值给list,list123赋值给x,listLetter赋值给y,所以输出的是整个列表的内容,自然不符合你要逐个元素配对的需求。
扩展:处理不等长列表
如果你的三个列表长度不一样,zip()会以最短的列表为准停止迭代。要是想保留所有元素(用指定值补全短列表的空缺),可以用itertools.zip_longest():
from itertools import zip_longest listXYZ = ['X','Y', 'Z', 'A'] list123 = ['1','2','3'] listLetter= ['FF','GG'] # 用'-'补全空缺位置 for x, y, z in zip_longest(listXYZ, list123, listLetter, fillvalue='-'): print(x, y, z)
输出:
X 1 FF Y 2 GG Z 3 - A - -
内容的提问来源于stack exchange,提问作者haduki
相关产品推荐
相关产品推荐

