Python 压缩函数(zip)详解

Python中的zip()函数是一个内置函数,用于将多个序列中的元素打包在一起,返回一个元组构成的列表,其中每个元组包含来自每个序列的元素。它可以接受任意数量的序列,其中最短的序列确定了新列表的长度。在这篇文章中,我们将详细介绍zip函数的用法、语法和示例。

语法

zip()函数的语法如下:
zip([iterable, ...])

这里iterable表示要打包的迭代器或可迭代对象。zip()函数返回一个元组的列表,其中每个元组包含来自每个序列的元素。新列表的长度等于最短的序列长度。因此,如果一个序列比其他序列短,那么zip函数会在最短的序列元素用完后停止。

基本用法

让我们从一个简单的示例开始,看看如何使用zip函数来打包两个列表:

fruits = ["apple", "banana", "orange"]
prices = [1.2, 2.3, 3.4]

for fruit, price in zip(fruits, prices):
    print(fruit, price)

输出结果如下:

apple 1.2
banana 2.3
orange 3.4

这里,我们使用zip函数将两个列表打包在一起,然后使用for循环遍历打包后的结果。在循环中,我们使用两个变量fruit和price来解压缩每个元组中的值,并将它们打印出来。

解压缩

我们也可以使用zip函数将列表解压缩为单独的列表。例如:

zipped = [("apple", 1.2), ("banana", 2.3), ("orange", 3.4)]

fruits, prices = zip(*zipped)

print(fruits)   # ("apple", "banana", "orange")
print(prices)   # (1.2, 2.3, 3.4)

这里,我们首先将一个由元组构成的列表zipped打包在一起。然后,我们将其解压缩为两个列表,其中一个列表包含所有水果名称,另一个列表包含所有对应的价格。

需要注意的是,在解压缩列表时,需要在zip函数调用中使用*操作符,它将列表解压为单独的元素。

并行迭代多个列表

可以使用zip函数在并行迭代多个列表时节省代码。例如,假设我们有两个列表,一个包含姓名,另一个包含年龄。我们可以使用zip函数并行迭代这两个列表,并在循环中打印每个人的姓名和年龄。示例代码如下:

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

本文链接:https://my.lmcjl.com/post/18016.html

展开阅读全文

4 评论

留下您的评论.