Python 實現二維List的順時針旋轉

2021-09-22 01:35:28 字數 1178 閱讀 6638

示例:輸入  [[1,2,3,7],[4,5,6,9],[7,9,2,4]]

得到輸出:  [[7,4,1],[9,5,2],[2,6,3],[4,9,7]]

for i in range(len(arr)):

for j in range(len(arr[i])):

if i == 0:

else:

r_arr[j].insert(0,arr[i][j])

思路非常簡單:首先遍歷list內的所有元素。

其中第一行的元素最後將出現在新陣列每一列的最後一位,第二行的元素將出現在新陣列每一列的倒數第二位……以此類推。因此我們只需要遍歷,並將元素依次向前插入即可。但此法時間複雜度過高。insert()方法本身自帶n個時間複雜度。因此實際執行會非常慢。

如果可以確定這個二維list是矩陣,那麼我們就不用這麼麻煩。下面的**來自王神仙前輩:

def rotate90angle(arr):

result =

h = len(arr) - 1

w = len(arr[0]) - 1

for j in range(len(arr[0])):

item =

for i in range(len(arr)):

return result

arr = np.array([[1,2,3,7],[4,5,6,9],[7,9,2,4]])  #用np定義陣列

def rotaryr(arr):

r_arr = arr.reshape(arr.size)

r_arr = r_arr[::-1]

r_arr = r_arr.reshape(arr.shape)

r_arr = np.transpose(r_arr)[::-1]

return r_arr

順帶一提逆時針旋轉的方法如下:

def rotaryl(arr):

r_arr = np.transpose(arr)

r_arr = r_arr[::-1]

return r_arr

想法也很簡單,分別用transpose()方法和reshape()方法對陣列進行序列上和形狀上的改變即可。

python實現二維列表(list)的旋轉 反轉

講在前面的話,在leetcode刷到一道in place的旋轉影象的題,同時在想如果不原位旋轉的話,肯定有其他簡單的方法的,答案是肯定的。順便寫篇部落格來記錄一下python中的反轉list的方法。1.python中反轉list的幾種簡單方法 1.1 使用reversed 的函式,它是乙個生成器,返...

Python建立二維陣列 關於list的乙個小坑

1.遇到的問題 今天寫python 的時候遇到了乙個大坑,差點就耽誤我交作業了。問題是這樣的,我需要建立乙個二維陣列,如下 m n 3test 0 m nprint test test 輸出結果如下 test 0,0,0 0,0,0 0,0,0 是不是看起來沒有一點問題?一開始我也是這麼覺得的,以為...

python建立與遍歷List二維列表的方法

python 建立list二維列表 lists for i in range 3 建立的是多行三列的二維列表 for i in range 3 lists 0 append i 程式設計客棧 for i in range 5 lists 1 append i for i in range 7 lis...