加载中...

python zip()函数

描述

  • zip() 是Python 中的一个实用的内置函数,它就像一个拉链, 可以将多个可迭代对象(列表,元组)中对应的元素‘拉’在一起,生成一个新的迭代器

基本语法

zip(*iterables)
  • iterables: 一个或多个可迭代对象(列表,元组,字符串)
  • 返回值:一个迭代器(zip 对象),其中每个元素都是一个元组。
  1. 基本压缩

    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)]
    
  2. 不同长度处理

    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)
posted @ 2026-03-13 14:15  最大的敌人是自律  阅读(18)  评论(0)    收藏  举报