如何利用Python實現(xiàn)n*n螺旋矩陣
3*3螺旋矩陣:
1 2 3
8 9 4
7 6 5
實現(xiàn)代碼:
def spiral(n): matrix = [[0] * n for _ in range(n)] # 順時針方向(右,下,左,上) dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] x = y = 0 dn = 0 # 方向指針0;向右填充,1:向下填充,2:向上填充,3:向上填充 for i in range(1, n * n + 1): # 從1開始賦值,一直到n*n matrix[x][y] = i temp_x = x + dx[dn] temp_y = y + dy[dn] if 0 <= temp_x < n and 0 <= temp_y < n and matrix[temp_x][temp_y] == 0: x = temp_x y = temp_y else: dn = (dn + 1) % 4 x += dx[dn] y += dy[dn] return matrix if __name__ == '__main__': n = int(input("輸入矩陣n值:")) matrix = spiral(n) for i in range(n): print(matrix[i])
運行結(jié)果:
附:python 簡單實現(xiàn)螺旋矩陣
創(chuàng)建一個大小為m * n的矩陣, 并以螺旋方式遍歷它。 在遍歷時,我們跟蹤變量“ val”以填充下一個值, 我們將“ val”一個接一個地遞增,并將其值放入矩陣中。 以下是簡單實現(xiàn): def spiral_matrix(m,n): ''' :param x: colunm index :param y: row index ''' a = [[0 for _ in range(m)] for _ in range(n)] val = 1 x,y = 0,0 count = m*n while val <= count: for i in range(x, m): a[x][i] = val val += 1 x += 1 for i in range(y+1, n): a[i][m-1] = val val += 1 y += 1 if x < m: for i in range(m-2, x-2, -1): a[n-1][i] = val val += 1 m -= 1 if y < n: for i in range(n-2, y-1, -1): a[i][y-1] = val val += 1 n -= 1 for i in a: print(*i) spiral_matrix(6,6) # 1 2 3 4 5 6 # 20 21 22 23 24 7 # 19 32 33 34 25 8 # 18 31 36 35 26 9 # 17 30 29 28 27 10 # 16 15 14 13 12 11
總結(jié)
到此這篇關(guān)于如何利用Python實現(xiàn)n*n螺旋矩陣的文章就介紹到這了,更多相關(guān)Python實現(xiàn)n*n螺旋矩陣內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python繪制BA無標(biāo)度網(wǎng)絡(luò)示例代碼
今天小編就為大家分享一篇python繪制BA無標(biāo)度網(wǎng)絡(luò)示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11Python+OpenCV實戰(zhàn)之拖拽虛擬方塊的實現(xiàn)
這篇文章主要介紹了如何利用Python+OpenCV實現(xiàn)拖拽虛擬方塊的效果,即根據(jù)手指坐標(biāo)位置和矩形的坐標(biāo)位置,判斷手指點是否在矩形上,如果在則矩形跟隨手指移動,感興趣的可以了解一下2022-08-08python3的數(shù)據(jù)類型及數(shù)據(jù)類型轉(zhuǎn)換實例詳解
在本文里小編給大家分享的是關(guān)于python3的數(shù)據(jù)類型及數(shù)據(jù)類型轉(zhuǎn)換以及相關(guān)實例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2019-08-08flask-socketio實現(xiàn)WebSocket的方法
這篇文章主要介紹了flask-socketio實現(xiàn)WebSocket的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07Python 3.x讀寫csv文件中數(shù)字的方法示例
在我們?nèi)粘i_發(fā)中經(jīng)常需要對csv文件進行讀寫,下面這篇文章主要給大家介紹了關(guān)于Python 3.x讀寫csv文件中數(shù)字的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08python開發(fā)之a(chǎn)naconda以及win7下安裝gensim的方法
這篇文章主要介紹了python開發(fā)之a(chǎn)naconda以及win7下安裝gensim的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python實現(xiàn)一行代碼自動繪制藝術(shù)畫
DiscoArt?是一個很牛的開源模塊,它能根據(jù)你給定的關(guān)鍵詞自動繪畫。本文就將利用這一模塊實現(xiàn)一行代碼自動繪制藝術(shù)畫,需要的可以參考一下2022-12-12