您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)Python如何解決矩陣旋轉(zhuǎn)的問題,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數(shù)字,例如,如果輸入如下4 X 4矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數(shù)字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
思路:可以模擬魔方逆時針旋轉(zhuǎn)的方法,一直做取出第一行的操作,例如 :
1 2 3 4 5 6 7 8 9
利用pop輸出并且刪除第一行后,再進行一次逆時針旋轉(zhuǎn),就變成:
6 9 5 8 4 7
然后,繼續(xù)重復上述操作即可。
最主要的在于實現(xiàn)矩陣的逆時針操作。關(guān)于矩陣的旋轉(zhuǎn)有好幾種,轉(zhuǎn)置、順時針、逆時針,下面直接上代碼,用一行python代碼實現(xiàn)這三種操作。
矩陣轉(zhuǎn)置:
matrix = [[1,2,3], [4,5,6], [7,8,9]] matrix = map(list, zip(*matrix)) print(matrix) >>>[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
矩陣順時針旋轉(zhuǎn):先把矩陣上下翻轉(zhuǎn),然后在轉(zhuǎn)置一下
matrix = [[1,2,3], [4,5,6], [7,8,9]] matrix[:] = map(list,zip(*matrix[::-1])) print(matrix) >>>[[7, 4, 1], [8, 5, 2], [9, 6, 3]]
矩陣逆時針旋轉(zhuǎn):先把矩陣轉(zhuǎn)置一下,然后在上下翻轉(zhuǎn)
matrix = [[1,2,3], [4,5,6], [7,8,9]] matrix[:] = map(list,zip(*matrix))[::-1] print(matrix) >>>[[3, 6, 9], [2, 5, 8], [1, 4, 7]]
下面是完整的解題代碼:
# -*- coding:utf-8 -*- class Solution: # matrix類型為二維列表,需要返回列表 def printMatrix(self, matrix): # write code here result = [] while(matrix): result += matrix.pop(0) if not matrix or not matrix[0]: break # 將矩陣逆時針旋轉(zhuǎn) matrix[:] = map(list, zip(*matrix))[::-1] return result
關(guān)于“Python如何解決矩陣旋轉(zhuǎn)的問題”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。