如何将两个Python列表中的元素一一配对?
如何实现Python列表对应位置元素一一配对输出?
问题场景
现有两个Python列表:
students = ['John', 'Tom', 'Toby', 'Sandy', 'Shawn'] marks = [77, 79, 80, 71, 17]
原本用嵌套for循环的代码会输出所有元素的全组合:
students = ['John', 'Tom', 'Toby', 'Sandy', 'Shawn'] marks = [77, 79, 80, 71, 17] for student in students: for mark in marks: print(f'{student}: {mark}')
现在需要改成对应位置元素一一配对的输出,得到如下结果:
John: 77 Tom: 79 Toby: 80 Sandy: 71 Shawn: 17
方法1:用zip()函数(推荐)
zip()函数会自动把多个可迭代对象对应位置的元素打包成元组,直接遍历这些元组就能实现一一配对:
students = ['John', 'Tom', 'Toby', 'Sandy', 'Shawn'] marks = [77, 79, 80, 71, 17] for student, mark in zip(students, marks): print(f'{student}: {mark}')
如果两个列表长度不一样,zip()会以较短的列表为准停止配对。要是需要处理长度不一致的场景,可以导入itertools模块用zip_longest()方法。
方法2:通过索引遍历
如果想直观理解索引对应关系,也可以用range()生成索引,再通过索引访问两个列表的元素:
students = ['John', 'Tom', 'Toby', 'Sandy', 'Shawn'] marks = [77, 79, 80, 71, 17] for i in range(len(students)): print(f'{students[i]}: {marks[i]}')
注意:这种方法要求两个列表长度必须一致,不然会出现索引越界错误。
内容的提问来源于stack exchange,提问作者Anuj Sharma
相关产品推荐
相关产品推荐

