zip()是最简洁Pythonic的双列表配对方法,按位置打包成元组迭代器,以最短列表为准;支持多列表同时遍历,内存高效但仅可迭代一次。
直接用
把两个列表“拉链式”配对,再用
循环逐个取值,是最简洁、最 Pythonic 的做法。
基础用法:一次获取两个列表的对应元素
会把多个可迭代对象(比如列表)中**相同位置**的元素打包成元组,返回一个 zip 对象(迭代器)。只要两个列表长度相等,就能一一对应。
例如:
输出:
Alice is 25 years old
Bob is 30 years old
Charlie is 35 years old
注意 zip() 返回的是迭代器,不是列表
它只在循环或显式转换时才生成数据,节省内存。如果需要重复使用结果,得转成列表:
立即学习
“
Python免费学习笔记(深入)
”;
→
直接多次遍历 zip 对象会“空转”,因为迭代器只能用一次
处理更长的列表时要小心长度不匹配
默认以**最短的可迭代对象为准**。如果两个列表长度不等,多出的部分会被自动忽略。
Python 3.14.3
微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。
下载
例如:
只会输出两行:
和
,后面
和
不参与。
若需按最长列表补齐,可用
,并指定填充值(如
)。
扩展:同时遍历三个或更多列表也一样简单
支持任意多个参数:
只要它们长度一致,就能安全解包使用。
zip()forzip()names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} is {age} years old")list(zip(names, ages))[('Alice', 25), ('Bob', 30), ('Charlie', 35)]zip()list1 = [1, 2, 3, 4]
list2 = ['a', 'b']
for x, y in zip(list1, list2):
print(x, y)1 a2 b34itertools.zip_longest()fillvalue=Nonezip()names = ['Alice', 'Bob']
ages = [25, 30]
cities = ['Beijing', 'Shanghai']
for name, age, city in zip(names, ages, cities):
print(f"{name}, {age}, {city}")