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

Python zip函数的用法与示例

发布时间:2023-06-01 20:59:36

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函数会按照最短的对象进行组合,多出来的元素将会被忽略掉。