• 深入理解 Python 中的 zip 函数


    目录

    一、zip 函数的基础用法

    二、处理不等长的可迭代对象

    三、使用 * 运算符进行解压

    四、在并行迭代中使用 zip

    五、zip 与字典

    六、高级示例

    同时遍历多个列表

    使用 zip 创建字典的进阶用法

    利用 zip 进行数据筛选


    🚀 个人主页xmp65535

    🚀 专栏python技术专栏


    Python 中的 zip 函数是一个内置函数,它用于将多个可迭代对象(如列表、元组或字符串)中的元素打包成一个元组列表。每个元组包含来自所有输入可迭代对象的对应元素。这个强大的函数简化了许多涉及并行迭代的常见任务。

    一、zip 函数的基础用法

    zip 的基本用法是将两个或多个可迭代对象作为参数,返回一个 zip 对象。这个 zip 对象是一个可迭代的,包含元组的序列,每个元组从每个输入可迭代对象中取出一个元素。

    语法:

    zip(iterable1, iterable2, ...)
    
    • iterable1iterable2, ... : 用于打包的可迭代对象,可以是多个,甚至可以为空。

    返回值:

    • 返回一个由元组组成的迭代器,其中每个元组包含了传入的可迭代对象中相同位置的元素。

    示例:

    1. list1 = [1, 2, 3]
    2. list2 = ['a', 'b', 'c']
    3. zipped = zip(list1, list2)
    4. print(list(zipped)) # 输出:[(1, 'a'), (2, 'b'), (3, 'c')]

    二、处理不等长的可迭代对象

    当输入的可迭代对象长度不一致时,zip 会停止到最短的可迭代对象结束。这意味着长于其他对象的迭代对象的剩余部分将不会出现在 zip 结果中。

    1. numbers = [1, 2, 3]
    2. letters = ['a', 'b']
    3. zipped = zip(numbers, letters)
    4. print(list(zipped))

    输出将是:

    [(1, 'a'), (2, 'b')]
    

    三、使用 * 运算符进行解压

    zip 还可以与 * 运算符结合使用,进行所谓的解压操作。这可以将 zip 对象转换回原来的可迭代对象列表。

    1. zipped = [(1, 'a'), (2, 'b'), (3, 'c')]
    2. numbers, letters = zip(*zipped)
    3. print(list(numbers))
    4. print(list(letters))

    输出将是:

    1. [1, 2, 3]
    2. ['a', 'b', 'c']

    四、在并行迭代中使用 zip

    zip 函数在需要并行迭代多个可迭代对象时非常有用。例如,当你需要同时遍历多个列表,并在相同位置进行操作时。

    1. names = ['Alice', 'Bob', 'Charlie']
    2. ages = [24, 50, 18]
    3. countries = ['Italy', 'USA', 'Canada']
    4. for name, age, country in zip(names, ages, countries):
    5. print(f'{name} is {age} years old and comes from {country}')

    五、zip 与字典

    zip 也可以用来创建字典,将一系列的键和值配对。

    1. keys = ['name', 'age', 'gender']
    2. values = ['Alice', 28, 'Female']
    3. info_dict = dict(zip(keys, values))
    4. print(info_dict)

    输出将是:

    {'name': 'Alice', 'age': 28, 'gender': 'Female'}
    

    六、高级示例

    同时遍历多个列表

    假设你在处理一个项目,需要从三个不同的列表中提取数据来生成一个综合信息列表。每个列表分别存储了用户的姓名、年龄和职业。

    1. names = ["Alice", "Bob", "Charlie"]
    2. ages = [25, 30, 35]
    3. occupations = ["Engineer", "Doctor", "Artist"]
    4. for name, age, occupation in zip(names, ages, occupations):
    5. print(f"{name} is {age} years old and works as a(n) {occupation}.")

    这个例子展示了如何利用 zip 同时遍历多个列表,并在每次迭代中打印出对应的信息。

    使用 zip 创建字典的进阶用法

    zip 函数非常适合于将两个列表合并成一个字典,其中一个列表包含键,另一个列表包含值。这种方法特别有用,特别是在处理数据结构转换时。

    1. properties = ["name", "age", "occupation"]
    2. values = ["Alice", 25, "Engineer"]
    3. user_info = dict(zip(properties, values))
    4. print(user_info)

    输出:

    {'name': 'Alice', 'age': 25, 'occupation': 'Engineer'}
    

    利用 zip 进行数据筛选

    你还可以使用 zip 结合列表推导来对数据进行筛选。

    1. numbers = [1, 2, 3, 4, 5, 6]
    2. letters = ['a', 'b', 'c', 'd', 'e', 'f']
    3. # 只选择索引为偶数的元素
    4. filtered_pairs = [(num, letter) for index, (num, letter) in enumerate(zip(numbers, letters)) if index % 2 == 0]
    5. print(filtered_pairs)

    输出:

    [(1, 'a'), (3, 'c'), (5, 'e')]
    

    这个例子展示了如何仅选择索引为偶数的元素对。

  • 相关阅读:
    ERROR LINK2019 无法解析的外部符号的常见错因
    数据结构——八大排序算法(面试/数据结构期末考试-简单且详细)
    koa2 快速上手
    报错资源不足,k8s使用containerd运行容器修改挂载点根目录换成/home
    jQuery学习(一)
    机器学习06|两万字:决策树 【jupyter代码详解篇】
    WebKit是什么?
    A_B001_01 stc-isp 单片机烧录软件安装与使用
    2562.找出数组中的串联值
    LeetCode---SQL刷题2
  • 原文地址:https://blog.csdn.net/qq_26917905/article/details/138223206