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参数进行指定。
