Python 中的 Zip 函数

liftword2个月前 (03-03)技术文章15

1. 引言

Python 是一种多功能且功能强大的编程语言,它提供了无数的内置函数,使编码更加高效和直接。在这些函数中,该 zip() 函数因其简化涉及数据迭代和聚合的任务的能力而脱颖而出。

2. 了解 Zip 函数

2.1. 什么是 Zip 功能?

Python 中的 zip() 函数是一个内置函数,它接受两个或多个可迭代对象(如列表、元组或字典)并将它们聚合到单个可迭代的元组中。每个元组都包含每个输入可迭代对象中相应位置的元素。

2.2. zip函数的语法

zip() 函数的基本语法如下:

zip(*iterables)
  • *iterables:要组合的两个或多个可迭代对象(例如,列表、元组、集合)。

2.3. Zip 函数的工作原理

zip() 函数的工作原理是从每个可迭代对象中获取第一个项目并形成一个元组,然后从每个可迭代对象中获取第二个项目以形成另一个元组,依此类推,直到最短的输入可迭代对象用尽。

3.在 Python 中使用 zip 函数

3.1. 简单示例

从一个简单的例子开始,来演示该 zip() 函数是如何工作的:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']

zipped = zip(list1, list2)
print(list(zipped))

# Output:
# [(1, 'a'), (2, 'b'), (3, 'c')]

3.2. 处理不同长度的迭代对象

当可迭代对象具有不同的长度时,函数 zip() 在最短的可迭代对象处停止:

numbers = [1, 2, 3]
letters = ['a', 'b', 'c', 'd', 'e']

zipped = zip(numbers, letters)
print(list(zipped))

# Output:
# [(1, 'a'), (2, 'b'), (3, 'c')]

3.3. 使用 Zip 函数解压缩

还可以使用该 zip() 函数将元组列表解压缩到单独的列表中:

zipped_list = [(1, 'a'), (2, 'b'), (3, 'c')]
numbers, letters = zip(*zipped_list)

print(list(numbers))
print(list(letters))

# Ouput:
# [1, 2, 3]
# ['a', 'b', 'c']

4. Zip功能的高级应用

4.1. 并行迭代

zip() 函数对于多个列表的并行迭代特别有用:

names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
professions = ['Engineer', 'Doctor', 'Artist']

for name, age, profession in zip(names, ages, professions):
    print(f"{name} is a {age}-year-old {profession}.")

# Output:
# Alice is a 25-year-old Engineer.
# Bob is a 30-year-old Doctor.
# Charlie is a 35-year-old Artist.

4.2. 创建字典

可以使用该 zip() 函数通过将两个列表压缩在一起来创建词典:

keys = ['name', 'age', 'profession']
values = ['Alice', 30, 'Engineer']

person_dict = dict(zip(keys, values))
print(person_dict)

# Output:
# {'name': 'Alice', 'age': 30, 'profession': 'Engineer'}

4.3. 处理多个迭代对象

zip() 函数可以处理两个以上的可迭代对象,从而允许进行复杂的聚合:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = [10, 20, 30]

zipped = zip(list1, list2, list3)
print(list(zipped))

# Output:
# [(1, 'a', 10), (2, 'b', 20), (3, 'c', 30)]

5. 最佳实践和提示

  • 当与不同长度的可迭代对象一起使用 zip() 时,请注意,生成的迭代器的长度将与最短的输入可迭代对象一样长。
  • 要在不截断的情况下处理不同长度的可迭代对象,请考虑使用 itertools.zip_longest()
  • 与列表推导式结合使用 zip() ,以获得简洁易读的代码。
  • 请记住,该 zip() 函数返回一个迭代器,因此,如果需要多次访问压缩元素,请将结果转换为列表或元组。

相关文章

最全RAR文件操作指南:如何用Python压缩、解压与筛选文件

引言:Python 对 .rar 文件进行压缩、解压以及筛选特定文件的操作代码封装一下import os import rarfile #todo 用于处理 RAR 文件 import zipfil...

20 天学 Python 文件操作:Day 16 文件压缩与解压

在日常工作中,我们经常需要对文件进行压缩和解压操作以减少存储空间或方便文件传输。今天,我们将学习如何使用 Python 进行文件的压缩与解压。1. 使用 zipfile 模块进行 ZIP 文件操作创建...

Python全能压缩:ZIP的压缩、解压、文件筛选与删除,一键搞定!

引言:这个方法实现了文件压缩与解压的常见操作,涵盖内容如下:1、从文件夹创建 ZIP 文件 2、从文件夹创建 ZIP 文件(筛选特定文件) 3、解压 ZIP 文件中的所有内容 4、解压 ZIP...

15《Python 办公自动化教程》文件压缩与解压缩

压缩包也是我们平时工作中经常要接触到的文件格式,压缩文件后缀名通常有 .zip、.rar、.7z 等等。Python 中也有专门用来操作压缩包文件的第三方模块 zipfile。听这个名字就知道是用来操...

python压缩/解压gzip 大文件

最近处理线上日志,日志文件刚好是经过压缩的,且是gz后缀。自己便采用gzip库来处理。示例如下:创建gzip文件# -- coding: utf-8 -- import gzip """ 创建gzi...

小明用Python暴力破解压缩文件zip密码,省了250块钱

那天晚上小明和你一样在某个小网站上搜寻某些私密的学习资料突然看到论坛有人提供了一个非常牛逼的资源小明怀着激动的心情下载了下来他怀着激动的心情打开了这个压缩文件看到就只有这么一个 txt 小明就是一顿双...