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

2021-09-18 06:04:32 字數 1825 閱讀 7147

講在前面的話,在leetcode刷到一道in-place的旋轉影象的題,同時在想如果不原位旋轉的話,肯定有其他簡單的方法的,答案是肯定的。順便寫篇部落格來記錄一下python中的反轉list的方法。

1.python中反轉list的幾種簡單方法

1.1 使用reversed()的函式,它是乙個生成器,返回乙個物件

nums = [1,2,3,4,5]

reversed_nums = list(reversed(nums))

print(reversed_nums) # [5, 4, 3, 2, 1]

1.2 使用列表中的切片

nums = [1,2,3,4,5]

reversed_nums = nums[::-1]

1.3 使用list的reverse方法(in-place)

nums = [1,2,3,9,4,5,6]

nums.reverse() #[6, 5, 4, 9, 3, 2, 1]

1.4 二維list類似可以使用以上的方法就不在重複講了

2.旋轉影象

給定 matrix = 

[ [1,2,3],

[4,5,6],

[7,8,9]

],原地旋轉輸入矩陣,使其變為:

[ [7,4,1],

[8,5,2],

[9,6,3]

]

解題思路:

先反轉list, 然後交換對稱

"""

/** clockwise rotate

* first reverse up to down, then swap the symmetry

* 1 2 3 7 8 9 7 4 1

* 4 5 6 => 4 5 6 => 8 5 2

* 7 8 9 1 2 3 9 6 3

*//*

* anticlockwise rotate

* first reverse left to right, then swap the symmetry

* 1 2 3 3 2 1 3 6 9

* 4 5 6 => 6 5 4 => 2 5 8

* 7 8 9 9 8 7 1 4 7

*/"""

2.1 in-place的解法

class solution:

def rotate(self, matrix: list[list[int]]) -> none:

matrix.reverse()

for i in range(len(matrix)):

for j in range(i+1, len(matrix[i])):

matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]

2.2 使用一行**求解,但不是原位操作

original = [

[ 5, 1, 9,11],

[ 2, 4, 8,10],

[13, 3, 6, 7],

[15,14,12,16]

]rotated = list(zip(*original[::-1])) #[(15, 13, 2, 5), (14, 3, 4, 1), (12, 6, 8, 9), (16, 7, 10, 11)]

python二維列表

class vector2 向量 def init self,x 0,y 0 self.x x self.y y 將函式轉移到類中,就是靜態方法 staticmethod 向右取值 defright return vector2 0,1 向上取值 staticmethod defup return ...

python二維列表排序

假設有乙個學生列表儲存了學號,姓名,年齡資訊 students 3,jack 12 2,rose 13 1,tom 10 5,sam 12 4,joy 8 按學號順序排序 sorted students,key lambda x x 0 1,tom 10 2,rose 13 3,jack 12 4,...

Python與二維列表

列表中的元素還可以是另乙個列表,這種列表稱為多為列表。只有一層巢狀的多維列表稱為二維列表。語法 變數 元素1,元素2 元素1,元素2 使用列表儲存員工的工號 姓名和月薪資訊 使用for迴圈遍歷輸出所有的員工資訊 employee infos a1 王保華 10000 a2 李維新 5200 a3 張...