Python一行代碼解決矩陣旋轉(zhuǎn)的問題
今天刷《劍指offer》的時(shí)候碰到這樣一道題:
輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(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.
思路:可以模擬魔方逆時(shí)針旋轉(zhuǎn)的方法,一直做取出第一行的操作,例如 :
1 2 3 4 5 6 7 8 9
利用pop輸出并且刪除第一行后,再進(jìn)行一次逆時(shí)針旋轉(zhuǎn),就變成:
6 9 5 8 4 7
然后,繼續(xù)重復(fù)上述操作即可。
最主要的在于實(shí)現(xiàn)矩陣的逆時(shí)針操作。關(guān)于矩陣的旋轉(zhuǎn)有好幾種,轉(zhuǎn)置、順時(shí)針、逆時(shí)針,下面直接上代碼,用一行python代碼實(shí)現(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]]
矩陣順時(shí)針旋轉(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]]
矩陣逆時(shí)針旋轉(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 # 將矩陣逆時(shí)針旋轉(zhuǎn) matrix[:] = map(list, zip(*matrix))[::-1] return result
以上這篇Python一行代碼解決矩陣旋轉(zhuǎn)的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- python sklearn包——混淆矩陣、分類報(bào)告等自動(dòng)生成方式
- python 解決print數(shù)組/矩陣無法完整輸出的問題
- python 和c++實(shí)現(xiàn)旋轉(zhuǎn)矩陣到歐拉角的變換方式
- Python:二維列表下標(biāo)互換方式(矩陣轉(zhuǎn)置)
- Python 矩陣轉(zhuǎn)置的幾種方法小結(jié)
- Python:合并兩個(gè)numpy矩陣的實(shí)現(xiàn)
- python 二維矩陣轉(zhuǎn)三維矩陣示例
- python實(shí)現(xiàn)矩陣和array數(shù)組之間的轉(zhuǎn)換
- Python稀疏矩陣及參數(shù)保存代碼實(shí)現(xiàn)
相關(guān)文章
python雙端隊(duì)列原理、實(shí)現(xiàn)與使用方法分析
這篇文章主要介紹了python雙端隊(duì)列原理、實(shí)現(xiàn)與使用方法,結(jié)合實(shí)例形式分析了Python雙端隊(duì)列的概念、原理、定義及使用方法,需要的朋友可以參考下2019-11-11python實(shí)現(xiàn)簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)算法
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03Python實(shí)現(xiàn)博客快速備份的腳本分享
本文針對(duì)博客園實(shí)現(xiàn)了一個(gè)自動(dòng)備份腳本,可以快速將自己的文章備份成Markdown格式的獨(dú)立文件,備份后的md文件可以直接放入到hexo博客中,感興趣的可以了解一下2022-09-09Pytorch 使用CNN圖像分類的實(shí)現(xiàn)
這篇文章主要介紹了Pytorch 使用CNN圖像分類的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06python連接并簡(jiǎn)單操作SQL?server數(shù)據(jù)庫詳細(xì)步驟
python作為一門十分火熱的編程語言,操作數(shù)據(jù)庫自然是必不可少的,下面這篇文章主要給大家介紹了關(guān)于python連接并簡(jiǎn)單操作SQL?server數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下2023-06-06Python Faker批量生成測(cè)試數(shù)據(jù)的實(shí)現(xiàn)
本文主要介紹了Python Faker批量生成測(cè)試數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11Python數(shù)據(jù)庫的連接實(shí)現(xiàn)方法與注意事項(xiàng)
這篇文章主要介紹了Python數(shù)據(jù)庫的連接實(shí)現(xiàn)方法與注意事項(xiàng),需要的朋友可以參考下2016-02-02python開發(fā)環(huán)境PyScripter中文亂碼問題解決方案
PyScripter是一個(gè)使用Delphi開發(fā)的開源的Python集成開發(fā)環(huán)境(IDE),PyScripter支持Python2.4、2.5、2.6、2.7、3.0、3.1、3.2,而且可以根據(jù)需要切換。2016-09-09