欢迎访问宙启技术站
智能推送

Python中的zip函数:用于将多个序列按位打包并返回一个包含元组的新序列。

发布时间:2023-05-28 17:19:20

Python语言中有很多很方便的函数。

其中,zip函数就是一个很常用的函数。 它非常简单,但却非常有用。

zip函数的功能是将多个序列按位打包并返回一个包含元组的新序列。

我们来看一下具体的用法:

1. 使用zip函数

使用zip函数,我们只需要将要打包的序列传入函数中,即可得到一个包含元组的新序列。

例如:

a = [1, 2, 3]
b = ['a', 'b', 'c']
c = zip(a, b)

print(list(c))

输出结果为:

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

只需要将要打包的序列传入zip函数中,就可以得到一个包含元组的新序列。 我们可以通过print函数来输出这个序列,得到一组由元组组成的列表。

2. 使用zip函数进行解压缩

除了将多个序列打包外,zip函数还可以用于解压缩。

例如:

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

print(a)
print(b)

输出结果为:

(1, 2, 3)
('a', 'b', 'c')

首先,我们需要使用*将元组转换为参数的形式,然后将其传入zip函数中。

然后,我们定义两个变量a和b,通过zip函数返回的元组进行解压缩,并将其赋值给了这两个变量。

最终,我们可以得到将原来的元组分别解压缩成为了两个变量a和b。

3. 实际应用

zip函数的应用非常广泛。在实际的开发中,我们经常会用到它。以下是一些实际应用情况。

情况1:

做一个列表的索引号/字典的键名,需要知道序列中每个元素对应的位置

lst = ["apple", "banana", "orange", "peach"]
dic = dict(zip(lst, range(len(lst))))
print(dic)

输出:

{'apple': 0, 'banana': 1, 'orange': 2, 'peach': 3}

情况2:

有两个列表,需要得到两个列表的每个元素相乘后的结果

lst1 = [1, 2, 3, 4, 5]
lst2 = [10, 9, 8, 7, 6]

lst = []
for i, j in zip(lst1, lst2):
    lst.append(i * j)

print(lst)

输出:

[10, 18, 24, 28, 30]

情况3:

计算两个列表中元素的平均数 - 进行多个列表的聚合处理(一行代码实现)

lst1 = [1, 2, 3, 4, 5]
lst2 = [10, 9, 8, 7, 6]
lst3 = [100, 90, 80, 70, 60]

lst = list(map(lambda x: sum(x)/len(x), zip(lst1, lst2, lst3)))

print(lst)

输出:

[37.0, 33.666666666666664, 30.333333333333332, 27.0, 23.666666666666668]

总结:

zip函数的应用非常广泛,它可以对多个序列进行打包和解压缩,处理多个列表时可以大显身手。我们在开发中经常会用到它,这里只是举了一些简单的应用场景,有了这个函数作为基础,我们可以做出更多更实用的应用。