Python的zip函數(shù)
示例1:
x = [1, 2, 3]y = [4, 5, 6]z = [7, 8, 9]xyz = zip(x, y, z)print xyz
運(yùn)行的結(jié)果是:
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
從這個(gè)結(jié)果可以看出zip函數(shù)的基本運(yùn)作方式。
示例2:
x = [1, 2, 3]y = [4, 5, 6]z = [7, 8, 9]xyz = zip(x, y, z)u = zip(*xyz)print u
運(yùn)行的結(jié)果是:
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
一般認(rèn)為這是一個(gè)unzip的過程,它的運(yùn)行機(jī)制是這樣的:
在運(yùn)行zip(*xyz)之前,xyz的值是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
那么,zip(*xyz) 等價(jià)于 zip((1, 4, 7), (2, 5, 8), (3, 6, 9))
所以,運(yùn)行結(jié)果是:[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
注:在函數(shù)調(diào)用中使用*list/tuple的方式表示將list/tuple分開,作為位置參數(shù)傳遞給對(duì)應(yīng)函數(shù)(前提是對(duì)應(yīng)函數(shù)支持不定個(gè)數(shù)的位置參數(shù))
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].
以上這篇對(duì)Python的zip函數(shù)妙用,旋轉(zhuǎn)矩陣詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林站長(zhǎng)站。
新聞熱點(diǎn)
疑難解答
圖片精選