Python zip函数的用法与示例
Python中的zip()函数通常用于将两个或多个可迭代对象组合在一起,并返回一个包含各个元素的元组的新的可迭代对象。zip函数的返回值是一个zip对象,可使用list函数或for循环方法获取其元素。
zip(*iterables)函数的语法格式如下所示:
zip(*iterables)
其中,iterables是一个或多个可迭代对象的参数;
zip函数的作用是分别从iterables中按顺序取出一个元素,组合成一个元组,直到所有对象中的元素都被取出为止。假设有两个列表A和B:
A = [1, 2, 3] B = ['a', 'b', 'c']
使用zip函数组合后,可以得到如下结果:
[(1, 'a'), (2, 'b'), (3, 'c')]
接下来,我们将通过一系列示例来深入了解zip函数的用法及其效果。
## 示例1:简单数据组合
a = [1, 2, 3] b = [4, 5, 6] res = list(zip(a, b)) print(res)
输出结果如下:
[(1, 4), (2, 5), (3, 6)]
通过使用zip函数将列表a和b中每个元素对应组成一个元组,并将其转换成列表输出。
## 示例2:not
weather = ['Sunny', 'Sunny', 'Rainy', 'Sunny', 'Rainy', 'Rainy'] weather_not = ['Not Sunny' if x == 'Sunny' else 'Not Rainy' for x in weather] res = list(zip(weather, weather_not)) print(res)
输出结果如下:
[('Sunny', 'Not Sunny'), ('Sunny', 'Not Sunny'), ('Rainy', 'Not Rainy'), ('Sunny', 'Not Sunny'), ('Rainy', 'Not Rainy'), ('Rainy', 'Not Rainy')]
通过使用zip函数将两个列表weather和weather_not按元素对应位置组成一个元组。
## 示例3:字典数据组合
keys = ['name', 'age', 'sex'] values = ['Jack', 18, 'Male'] res = dict(zip(keys, values)) print(res)
输出结果如下:
{'name': 'Jack', 'age': 18, 'sex': 'Male'}
通过使用zip函数将keys和values两个列表分别组合成对应的键值对,最终得到一个字典。
## 示例4:zip生成器
a = [1, 2, 3]
b = [4, 5, 6]
for x, y in zip(a, b):
print(x * y)
输出结果如下:
4 10 18
通过使用zip函数将a和b两个列表按元素对应位置组合成一个生成器对象,然后使用for循环遍历生成器对象,同时得到元素对应位置的x和y值,最终输出它们的乘积。
## 示例5:列表长度不一致
a = [1, 2, 3] b = [4, 5] res = list(zip(a, b)) print(res)
输出结果如下:
[(1, 4), (2, 5)]
注意:当列表长度不相等时,zip函数只会按照最短的那个列表进行组合,超出的元素将会被忽略。
## 示例6:反向zip
a = [1, 2, 3] b = [4, 5, 6] res = list(zip(b, a)) print(res)
输出结果如下:
[(4, 1), (5, 2), (6, 3)]
使用zip函数将b和a两个列表按元素对应位置组合。注意:这里的结果和示例1中组合的结果不同,因为zip函数将首先遍历长度较短的列表(即a),此时b中“多余”的元素将会被忽略掉。
总的来说,zip函数在处理数据组合时非常方便,特别是在处理字典和列表等数据结构时。不过,需要注意的是,当给定的可迭代对象长度不相等时,zip函数会按照最短的对象进行组合,多出来的元素将会被忽略掉。
