zip()是最简洁pythonic的双列表配对方法,按位置打包成元组迭代器,以最短列表为准;支持多列表同时遍历,内存高效但仅可迭代一次。

直接用 zip() 把两个列表“拉链式”配对,再用 for 循环逐个取值,是最简洁、最 Pythonic 的做法。
基础用法:一次获取两个列表的对应元素
zip() 会把多个可迭代对象(比如列表)中**相同位置**的元素打包成元组,返回一个 zip 对象(迭代器)。只要两个列表长度相等,就能一一对应。
例如:
names = ['Alice', 'Bob', 'Charlie']<br>ages = [25, 30, 35]<br><br>for name, age in zip(names, ages):<br> print(f"{name} is {age} years old")
输出:
Alice is 25 years old
Bob is 30 years old
Charlie is 35 years old
注意 zip() 返回的是迭代器,不是列表
它只在循环或显式转换时才生成数据,节省内存。如果需要重复使用结果,得转成列表:
-
list(zip(names, ages))→[('Alice', 25), ('Bob', 30), ('Charlie', 35)] - 直接多次遍历 zip 对象会“空转”,因为迭代器只能用一次
处理更长的列表时要小心长度不匹配
zip() 默认以**最短的可迭代对象为准**。如果两个列表长度不等,多出的部分会被自动忽略。
例如:
list1 = [1, 2, 3, 4]<br>list2 = ['a', 'b']<br>for x, y in zip(list1, list2):<br> print(x, y)
只会输出两行:1 a 和 2 b,后面 3 和 4 不参与。
若需按最长列表补齐,可用 itertools.zip_longest(),并指定填充值(如 fillvalue=None)。
扩展:同时遍历三个或更多列表也一样简单
zip() 支持任意多个参数:
names = ['Alice', 'Bob']<br>ages = [25, 30]<br>cities = ['Beijing', 'Shanghai']<br><br>for name, age, city in zip(names, ages, cities):<br> print(f"{name}, {age}, {city}")
只要它们长度一致,就能安全解包使用。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











