python zip()函数
描述
- zip() 是Python 中的一个实用的内置函数,它就像一个拉链, 可以将多个可迭代对象(列表,元组)中对应的元素‘拉’在一起,生成一个新的迭代器
基本语法
zip(*iterables)
- iterables: 一个或多个可迭代对象(列表,元组,字符串)
- 返回值:一个迭代器(zip 对象),其中每个元素都是一个元组。
-
基本压缩
names = ['Alice', 'Bob', 'Charlie'] ages = [25, 30, 35] scores = [85, 92, 78] # 将三个列表压缩在一起 result = list(zip(names, ages, scores)) print(result) # [('Alice', 25, 85), ('Bob', 30, 92), ('Charlie', 35, 78)] -
不同长度处理
list1 = [1, 2, 3, 4] list2 = ['a', 'b', 'c'] result = list(zip(list1, list2)) print(result) # [(1, 'a'), (2, 'b'), (3, 'c')] # 注意:以最短的列表为准
常见应用场景
1.同时遍历多个列表
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} is {age} years old")
# Alice is 25 years old
# Bob is 30 years old
# Charlie is 35 years old
2. 创建字典
keys = ['name', 'age', 'city']
values = ['Alice', 25, 'New York']
person = dict(zip(keys, values))
print(person) # {'name': 'Alice', 'age': 25, 'city': 'New York'}
3. 矩阵转置
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
transposed = list(zip(*matrix))
print(transposed)
# [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
4. 解压数据
# 压缩
data = [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
# 解压
names, ages = zip(*data)
print(names) # ('Alice', 'Bob', 'Charlie')
print(ages) # (25, 30, 35)
5.并行排序
names = ['Charlie', 'Alice', 'Bob']
ages = [35, 25, 30]
# 按姓名排序,同时保持对应关系
sorted_data = sorted(zip(names, ages))
names_sorted, ages_sorted = zip(*sorted_data)
print(names_sorted) # ('Alice', 'Bob', 'Charlie')
print(ages_sorted) # (25, 30, 35)

浙公网安备 33010602011771号