Python进阶-----高阶函数zip() 函数

目录

 前言:

zip() 函数简介        

 运作过程:

应用实例

1.有序序列结合

2.无序序列结合

3.长度不统一的情况


 前言:

                家人们,看到标题应该都不陌生了吧,我们都知道压缩包文件的后缀就是zip的,当然还有rar等类型,在Python中也有这么一个函数叫做zip() 函数,这个函数也是有类似的压缩功能,那下面就一起来看看吧!

zip() 函数简介        

进入Python中,输入help(zip) 获取信息帮助,如图所示: 

函数原型:

zip(iterable……)

说明:iterable……是表示多个可迭代对象 

 运作过程:

在Python中,zip() 函数可以把两个或者两个以上的可迭代对象进行聚合压缩,然后生成一个元组形式的迭代器(zip类型)并且返回,实际上就是把一些不相关的东西聚合到一起,通过另一种形式输出(这也是压缩文件的运作过程)

 图解:(一般对于有序序列而已)

应用实例

1.有序序列结合

 有序序列是有下标位置的,所以结果过程就是下标相同的结合为一个元组

示例1:列表与元组结合

a=[1,2,3,4,5]
b=('a','b','c','d','e')
conbine=zip(a,b) #获取到可迭代压缩对象
print(list(conbine)) #通过列表类型转换输出
#输出结果:[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]

示例2:实现两个列表同时参与循环

a=[1,2,3,4,5]
b=['a','b','c','d','e']
conbine=zip(a,b)
for i,j in conbine: #通过循环输出可迭代对象
    print(i,j)
# 1 a
# 2 b
# 3 c
# 4 d
# 5 e

示例3:range() 参与

conbine=zip(range(5),[chr(x) for x in range(65,70)])
print(list(conbine))
#输出结果:[(0, 'A'), (1, 'B'), (2, 'C'), (3, 'D'), (4, 'E')]

示例4:多个有序序列结合

a=[i for i in range(5)]
b=['a','b','c','d','e']
c=('jack','dick','john','amy','tom')
con=zip(a,b,c)
print(list(con))
#[(0, 'a', 'jack'), (1, 'b', 'dick'), (2, 'c', 'john'), (3, 'd', 'amy'), (4, 'e', 'tom')]

2.无序序列结合

示例1:集合之间的结合

a={2,1,3,4,5}
c={'a','b','c','d','e'}
con=zip(a,c)
print(list(con))
#输出结果:[(1, 'd'), (2, 'e'), (3, 'b'), (4, 'c'), (5, 'a')]

集合是无序序列的,所以在结合的过程中是随机的,没有按照位置下标一一对应

示例2:构建字典

li=['jack','dick','john']
li1=[98,88,68]
di=dict(zip(li,li1))
print(di)
#输出结果:{'jack': 98, 'dick': 88, 'john': 68}

3.长度不统一的情况

zip() 函数是一种按照下标位置一对一结合再一期的,当如果出现长度不一样的结合序列的时候,当其中一个序列结合完成了之后就结束(也就是木桶效应),取决于最短的那个

 示例:

li=['jack','dick','john','amy']
a=tuple(x for x in range(10))
print(len(li),len(a)) #长度分别为:4 10
con=zip(li,a)
print(list(con))
#输出结果:[('jack', 0), ('dick', 1), ('john', 2), ('amy', 3)]

好了,这个函数就介绍了到这里就,是不是很简单呢?学会了快去实践一下吧!!

分享一张壁纸:

猜你喜欢

转载自blog.csdn.net/m0_73633088/article/details/129420987