Python的zip函数:zip函数的使用及案例分析
Python中的zip函数是一个内置函数。zip函数的作用是将多个可迭代对象合并成一个可迭代对象,每次迭代返回一个元组,包含每个可迭代对象相同位置的数据。
zip函数的语法如下:
zip(*iterables)
其中,*iterables表示可迭代对象,可以是多个列表、元组、集合、字典等。zip函数会把多个可迭代对象的每个元素按照位置打包成元组,然后返回一个zip对象,该对象在每次迭代时返回一个元组。如果参数的长度不相等,则返回长度最短的可迭代对象的长度。
下面是zip函数的基本使用示例:
a = [1, 2, 3] b = ['a', 'b', 'c'] c = zip(a, b) print(list(c)) # [(1, 'a'), (2, 'b'), (3, 'c')]
在上面的示例中,列表a和列表b都有三个元素,zip函数会按照位置打包成元组,并返回一个可迭代对象。通过list()函数将该对象转化为列表,得到了[(1, 'a'), (2, 'b'), (3, 'c')]的结果。
除了基本的用法,zip函数还有其他的用途。下面介绍zip函数的一些案例分析:
### 1. zip函数用于矩阵转置
在python中,二维数组可以看作是一个矩阵,可以用zip函数将其转置。示例如下:
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] b = list(zip(*a)) print(b) # [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
在上面的示例中,a是一个三行三列的矩阵,将其转置得到的是一个三列三行的矩阵,也就是b。zip()函数将a中 行的元素与第二行的元素以及第三行的元素打包成元组,然后返回一个可迭代对象,list()函数将其转化为列表。
### 2. zip函数用于求多个列表的平均值
有一组数据,要求取多个列表相同位置上的平均值,可以使用zip函数。示例如下:
a = [1, 2, 3] b = [4, 5, 6] c = [7, 8, 9] d = [(i+j+k)/3 for i, j, k in zip(a,b,c)] print(d) # [4.0, 5.0, 6.0]
在上述示例中,变量d代表三个列表a、b、c的平均值。zip函数按位置打包三个列表中对应位置的数据,并用for循环遍历每个位置上的元素,最后计算平均值。
### 3. zip函数用于解压缩数据
zip函数可以将打包的数据解压缩,返回多个列表。示例如下:
a = [(1, 'a'), (2, 'b'), (3, 'c')] b, c = zip(*a) print(list(b)) # [1, 2, 3] print(list(c)) # ['a', 'b', 'c']
在上述示例中,变量a是一个打包好的元组,通过zip(*a)解压缩得到两个列表b和c。其中,b中存放的是打包元组的 个元素,c中存放的是打包元组的第二个元素。最后,通过list()函数将其转换为列表输出。
需要注意的是,如果解压缩的变量个数和元组的元素个数不一致,会抛出ValueError异常。
总结:zip函数是Python中一个非常有用的内置函数,可以用来解压缩、矩阵转置以及求列表平均值等多个场景,值得开发者们深入学习和掌握。
