Python一行代碼解決矩陣旋轉的問題
今天刷《劍指offer》的時候碰到這樣一道題:
輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數(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.
思路:可以模擬魔方逆時針旋轉的方法,一直做取出第一行的操作,例如 :
1 2 3 4 5 6 7 8 9
利用pop輸出并且刪除第一行后,再進行一次逆時針旋轉,就變成:
6 9 5 8 4 7
然后,繼續(xù)重復上述操作即可。
最主要的在于實現(xiàn)矩陣的逆時針操作。關于矩陣的旋轉有好幾種,轉置、順時針、逆時針,下面直接上代碼,用一行python代碼實現(xià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]]
矩陣順時針旋轉:先把矩陣上下翻轉,然后在轉置一下
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]]
矩陣逆時針旋轉:先把矩陣轉置一下,然后在上下翻轉
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
# 將矩陣逆時針旋轉
matrix[:] = map(list, zip(*matrix))[::-1]
return result
以上這篇Python一行代碼解決矩陣旋轉的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
關于Python調(diào)用百度語音合成SDK實現(xiàn)文字轉音頻的方法
這篇文章主要介紹了關于Python調(diào)用百度語音合成SDK實現(xiàn)文字轉音頻的方法,AipSpeech是語音合成的Python?SDK客戶端,為使用語音合成的開發(fā)人員提供了一系列的交互方法,需要的朋友可以參考下2023-07-07
詳解Python Matplotlib解決繪圖X軸值不按數(shù)組排序問題
這篇文章主要介紹了詳解Python Matplotlib解決繪圖X軸值不按數(shù)組排序問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08
python讀取excel指定列數(shù)據(jù)并寫入到新的excel方法
今天小編就為大家分享一篇python讀取excel指定列數(shù)據(jù)并寫入到新的excel方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Python Pandas工具繪制數(shù)據(jù)圖使用教程
Pandas是基于NumPy 的一種工具,該工具是為解決數(shù)據(jù)分析任務而創(chuàng)建的。Pandas還可以繪制多重數(shù)據(jù)圖表,本文將為大家介紹如何通過Pandas繪制圖表,感興趣的可以了解一下2021-12-12

