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

Python中的zip函数的用途和实例

发布时间:2023-06-23 11:26:48

Python中的zip函数可以将多个可迭代对象打包成一个元组列表,并返回这个列表。

zip函数的用途:

1. 合并两个或多个列表,用zip函数将它们打包成一个列表。

2. 将多个列表或元组的同样位置的元素组合成一个新的元组。

3. 将字典的键和值进行互换。

下面通过一些实例来介绍zip函数的使用:

1. 合并两个列表

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

输出结果:

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

2. 将多个列表或元组的同样位置的元素组合成一个新的元组

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
d = list(zip(a, b, c))
print(d)

输出结果:

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

3. 将字典的键和值进行互换

a_dict = {"a": 1, "b": 2, "c": 3}
a_dict_after = dict(zip(a_dict.values(), a_dict.keys()))
print(a_dict_after)

输出结果:

{1: 'a', 2: 'b', 3: 'c'}

在这个例子中,首先使用a_dict.values()方法将键值列表作为参数传给zip函数,再使用a_dict.keys()方法将键名列表作为参数传给zip函数构建一个可迭代对象,用dict()工厂函数将它们转换成一个字典对象。

需要注意的是,当可迭代对象中元素个数不一致时,zip函数会按照最短的可迭代对象长度进行打包成元素组合成列表。这个问题可以通过itertools模块的zip_longest()函数进行解决。

import itertools

a = [1, 2, 3]
b = ['a', 'b']
c = [4, 5, 6]
d = list(itertools.zip_longest(a, b, c, fillvalue='None'))
print(d)

输出结果:

[(1, 'a', 4), (2, 'b', 5), (3, 'None', 6)]

在这个例子中,使用itertools模块的zip_longest()函数进行打包生成的结果是全部可迭代对象中元素的打包组合,缺失的元素使用fillvalue进行填充,这个填充的默认值可以通过fillvalue参数进行指定。