二維列表即為一個列表中含有多個子列表,每個子列表又包含多個元素,它們在數學上可以表示為一個矩陣。在Python中操作二維列表可以使用簡單的循環和列表推導式,同時在標準庫中也提供了多個與二維列表相關的模塊和方法。本文將從多個方面對使用Python操作二維列表做詳細的闡述。
一、創建二維列表
在Python中創建一個二維列表可以使用嵌套列表的方式,也可以使用列表推導式,前者更常見。以下是兩種方式的示例代碼:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 或者
matrix = [[i + j for i in range(3)] for j in range(1, 4)]
第一種是將三個子列表手動寫出來並用中括號括起來,每個子列表內部用逗號分隔。第二種則使用列表推導式來自動生成三個子列表,並賦值給了matrix變量,推導式內部也是嵌套列表的語法,注意列表推導式也可以嵌套。
二、遍歷二維列表
遍歷二維列表可以使用雙重循環,外層循環遍歷每個子列表,內層循環遍歷每個子列表中的元素。以下是遍歷示例代碼:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
for element in row:
print(element, end=" ")
print()
以上代碼中,第一行為要遍歷的二維列表,第二行中的”row”即為每個子列表,第三行中的”element”即為子列表中的每個元素,因為每行遍歷完後要輸出一個空行,所以用了print()函數。運行後的輸出結果為:
1 2 3
4 5 6
7 8 9
三、對二維列表進行排序
對二維列表進行排序也可以使用列表排序方法,不過需要指定一下排序的依據,即按照哪一列或哪幾列進行排序。以下是示例代碼:
matrix = [[3, 7, 4], [9, 2, 5], [8, 1, 6]]
sorted_matrix = sorted(matrix, key=lambda row: (row[0], row[1]))
print(sorted_matrix)
以上代碼中,第一行為要排序的二維列表,第二行為對matrix進行排序,排序的key指定為lambda函數,使用lambda函數的好處是可以依據自定義的規則進行排序,這裡的規則是先按第一列升序,再按第二列升序。運行後的輸出結果為:
[[3, 7, 4], [8, 1, 6], [9, 2, 5]]
四、對二維列表進行元素提取
在二維列表中,如果想提取某一列或某幾列的元素,可以使用列表推導式來進行元素提取,以下是示例代碼:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
column_2 = [row[1] for row in matrix]
print(column_2)
以上代碼中,第一行為要提取元素的二維列表,第二行使用列表推導式獲取了每行的第二列元素,並賦值給了column_2變量。運行後的輸出結果為:
[2, 5, 8]
五、對二維列表進行元素修改
在二維列表中,如果想對某個元素進行修改,可以使用索引的方式來獲取到該元素並作出修改。以下是示例代碼:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matrix[1][2] = 0
print(matrix)
以上代碼中,第一行為要修改元素的二維列表,第二行表示修改第二行第三列的元素為0。運行後的輸出結果為:
[[1, 2, 3], [4, 5, 0], [7, 8, 9]]
六、對二維列表進行轉置
在二維列表中,將行與列進行轉換稱為轉置,可以使用zip函數來快速實現二維列表的轉置。以下是示例代碼:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
transpose_matrix = list(zip(*matrix))
print(transpose_matrix)
以上代碼中,第一行為要轉置的二維列表,第二行使用zip函數進行轉置,zip函數的參數前面加了一個星號*,表示把matrix二維列表中的子列表拆開成單個元素分別作為zip函數的參數,運行後的輸出結果為:
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
七、小結
本文介紹了使用Python操作二維列表的多個方面,包括創建、遍歷、排序、元素提取、元素修改和轉置,通過代碼示例的方式讓讀者更加深入的理解這些概念和操作,希望能夠幫助讀者更高效的處理二維列表相關的任務。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/286468.html