iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0
Python

一起來用 Snakify 練練手系列 第 20

【一起來用 Snakify 練練手】Day20 Lesson 9 概念

  • 分享至 

  • xImage
  •  

二維列表(Two-dimensional lists/arrays)

在 Python 中,二維列表(或稱二維陣列)是一種能夠表示表格數據的資料結構,它由多個列表組成,每個列表代表一個「行」(row)。我們可以使用巢狀列表(nested lists)來創建和操作這種結構。本文將介紹如何處理和建立二維列表,並通過範例解釋如何輸入、處理二維列表,以及使用巢狀生成器來處理數據。

1. 巢狀列表:處理與輸出

二維列表可以理解為列表中的列表。當我們處理這類數據時,可以通過迭代每個「行」並進一步迭代每個元素來處理所有數據。

範例:輸出二維列表

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for row in matrix:
    for element in row:
        print(element, end=' ')
    print()  # 換行

輸出結果:

1 2 3 
4 5 6 
7 8 9

在這個範例中,我們首先用兩層 for 迴圈遍歷每個「行」,然後進一步遍歷該行中的每個元素。外部的 for 迴圈處理每個行,而內部的 for 迴圈處理行中的元素,並將它們打印出來。

2. 巢狀列表:創建

創建二維列表的方式有很多,我們可以手動定義每個「行」,也可以使用生成器來動態創建二維列表。

範例:手動創建二維列表

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

這是一個 3x3 的二維列表,手動定義了每個元素。這樣的列表可以方便地表示行列結構。

動態創建二維列表

有時,我們希望使用生成器或 for 迴圈來動態創建二維列表,這樣能更靈活地處理列表大小及內容。

rows, cols = 3, 3
matrix = [[0 for _ in range(cols)] for _ in range(rows)]
print(matrix)

輸出結果:

[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

這段程式碼使用了巢狀生成器來創建一個 3x3 的二維列表,所有的元素初始值為 0。

3. 如何輸入二維列表?

可以通過使用嵌套的迴圈來輸入二維列表。每個行的數據可以通過 input() 函數或從文件中讀取,然後添加到列表中。

範例:從使用者輸入二維列表

rows = int(input("輸入行數: "))
cols = int(input("輸入列數: "))
matrix = []

for i in range(rows):
    row = []
    for j in range(cols):
        value = int(input(f"輸入元素 [{i}][{j}]: "))
        row.append(value)
    matrix.append(row)

print("輸入的二維列表:")
for row in matrix:
    print(row)

這段程式碼允許用戶動態輸入每個元素,並創建一個二維列表。當完成輸入後,會將整個二維列表輸出。

4. 處理二維列表:範例

讓我們看一個具體的應用範例,這裡我們計算二維列表中所有元素的總和。

範例:計算二維列表的總和

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

total_sum = 0
for row in matrix:
    for element in row:
        total_sum += element

print("二維列表中的元素總和:", total_sum)

這段程式碼通過巢狀的 for 迴圈遍歷整個二維列表,並將每個元素加到 total_sum 中,最終輸出總和。此範例展示了如何處理和操作二維列表的元素。

5. 二維列表:巢狀生成器

巢狀生成器是創建二維列表的一種簡便方式,特別適合處理大規模的數據生成。生成器語法非常簡潔,能夠快速定義出複雜的結構。

範例:使用生成器創建二維列表

rows, cols = 3, 3
matrix = [[i * j for j in range(cols)] for i in range(rows)]

for row in matrix:
    print(row)

輸出結果:

[0, 0, 0]
[0, 1, 2]
[0, 2, 4]

在這個範例中,我們使用巢狀生成器創建了一個 3x3 的二維列表,其中每個元素的值是 i * j。這種生成方式非常直觀且高效,適合創建結構化數據。

6. 總結

二維列表(或稱二維陣列)是 Python 中強大的資料結構之一,可以輕鬆表示表格數據。通過巢狀列表,我們能夠創建、處理和輸出這些數據。生成器則進一步簡化了創建的過程,使得二維列表的操作更加靈活和高效。熟悉這些技術能夠幫助我們有效地處理各類數據集。

另外提個外話😆
身為共同創辦人我當然要來分享一下
台灣首發晶片設計教材要募資啦
趕快點擊去了解 👉 https://wlinny.com


上一篇
【一起來用 Snakify 練練手】Day19 Lesson 8 練習題參考解答
下一篇
【一起來用 Snakify 練練手】Day21 Lesson 9 練習題參考解答-1
系列文
一起來用 Snakify 練練手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言