Python的zip函数
示例1:
1
2
3
4
5
6
7
8
9
|
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:
1
2
3
4
5
6
7
8
9
10
11
|
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)]
一般认为这是一个unzip的过程,它的运行机制是这样的:
在运行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分开,作为位置参数传递给对应函数(前提是对应函数支持不定个数的位置参数)
1
2
3
4
5
6
7
8
9
10
11
|
class Solution( object ):
def spiralOrder( self , matrix):
"""
:type matrix: List[List[int]]
:rtype: List[int]
"""
return matrix and list (matrix.pop( 0 )) + self .spiralOrder( zip ( * matrix)[:: - 1 ])
obj = Solution()
print obj.spiralOrder([ [ 1 , 2 , 3 ], [ 4 , 5 , 6 ], [ 7 , 8 , 9 ]])
|
Your return [1,2,3,6,9,8,7,4,5].
以上这篇对Python的zip函数妙用,旋转矩阵详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/u010457943/article/details/77369806