zip 函数接受任意数量的序列(包括 0 和 1)作为参数并返回元组列表。
直接看示例:
1.示例1:
代码如下:
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
print xyz
运行的结果是:
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
从这个结果可以看出zip函数的基本运作方式。
2.示例2:
代码如下:
x = [1, 2, 3]
y = [4, 5, 6, 7]
xy = zip(x, y)
print xy
运行的结果是:
代码如下:
[(1, 4), (2, 5), (3, 6)]
从这个结果可以看出zip函数的长度处理方式。
3.示例3:
代码如下:
x = [1, 2, 3]
x = zip(x)
print x
运行的结果是:
代码如下:
[(1,), (2,), (3,)]
从这个结果中,你可以看到只有一个参数时 zip 函数是如何工作的。
4.示例4:
代码如下:
x = zip()
print x
运行的结果是:
代码如下:
[]
从这个结果中,你可以看到 zip 函数在没有参数的情况下是如何工作的。
5.示例5:
代码如下:
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
u = zip(*xyz)
print u
运行的结果是:
代码如下:
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
一般认为这是一个解压过程,其运行机制如下:
在运行zip(*xyz)之前,xyz的值是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
那么,zip(*xyz) 等价于 zip((1, 4, 7), (2, 5, 8), (3, 6, 9))
所以,运行结果是:[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
注意:在函数调用中使用*list/tuple表示将list/tuple分开,作为位置参数传递给对应的函数(前提是对应的函数支持不定数量的位置参数)
6.示例6:
代码如下:
x = [1, 2, 3]
r = zip(* [x] * 3)
print r
运行的结果是:
代码如下:
[(1, 1, 1), (2, 2, 2), (3, 3, 3)]
它的运行机制是这样的:
[x]生成一个列表的列表,它只有一个元素x
[x] * 3生成一个列表的列表,它有3个元素,[x, x, x]
zip(* [x] * 3)的意思就明确了,zip(x, x, x)
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python sorted()函数的参数使用12/20
- ♥ Python代码判断水仙花的数量08/15
- ♥ Series中str属性repeat方法如何使用?11/28
- ♥ 如何用python画同心圆08/19
- ♥ Python PyQt 菜单的动态填充12/23
- ♥ python语言流行吗?12/14
内容反馈