基本用法
zip() 函数的语法如下:
zip(*iterables)
参数 *iterables 表示可传入多个可迭代对象。
核心特性
- 并行迭代:
zip()会从每个可迭代对象中各取一个元素,组合成元组 - 长度适配:当可迭代对象长度不一致时,以最短的对象为准
- 迭代器返回:Python 3 中返回的是 zip 对象(迭代器),而非列表
代码示例
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
# 基础用法
zipped = zip(names, ages)
print(list(zipped)) # 输出:[('Alice', 25), ('Bob', 30), ('Charlie', 35)]
# 处理不等长序列
scores = [85, 90]
print(list(zip(names, scores))) # 输出:[('Alice', 85), ('Bob', 90)]
# 解压操作
zipped_data = [('Alice', 25), ('Bob', 30)]
names, ages = zip(*zipped_data)
print(names) # 输出:('Alice', 'Bob')
print(ages) # 输出:(25, 30)
典型应用
- 多序列遍历:同步迭代多个可迭代对象
- 字典构建:配合
dict()快速创建字典 - 矩阵转置:实现二维列表的行列转换
- 数据聚合:将关联数据项组合成组
使用注意
性能优势
zip() 返回迭代器的特性使其在处理大数据集时更高效,避免一次性加载全部数据到内存。
高级应用
# 快速构建字典
keys = ['name', 'age', 'gender']
values = ['Alice', 25, 'Female']
print(dict(zip(keys, values))) # 输出:{'name': 'Alice', 'age': 25, 'gender': 'Female'}
# 实现矩阵转置
matrix = [[1, 2, 3], [4, 5, 6]]
print(list(zip(*matrix))) # 输出:[(1, 4), (2, 5), (3, 6)]
随时随地看视频