用Python進行陣列初始化的徹底解說|從列表生成式到NumPy

1. Python 中陣列(列表)初始化的基本概念

Python 的列表(陣列)是一種靈活的資料結構,可以儲存不同資料型別的元素,是 Python 程式設計中最基礎的知識之一。這篇文章將會說明在 Python 中初始化陣列(列表)的方法。

什麼是 Python 的列表?

列表是一種可以將數字、字串等各種資料型別的元素集合在一起的資料結構,在 Python 中常被用作「陣列」。它可以包含不同型別的元素,並且在初始化之後可以自由地新增或刪除元素。

example_list = [1, "Hello", True]
print(example_list)
# 輸出: [1, "Hello", True]

初始化空列表

要建立空的列表,可以使用 []list()。這種方式很適合在之後需要加入元素,或是預先保留變數使用時。

empty_list1 = []
empty_list2 = list()
print(empty_list1)  # 輸出: []
print(empty_list2)  # 輸出: []

初始化特定數量元素的列表

在 Python 中,可以輕鬆地建立具有特定元素數量的列表。舉例來說,如果要建立一個包含 5 個 0 的列表,可以這樣寫:

initial_list = [0] * 5
print(initial_list)  
# 輸出: [0, 0, 0, 0, 0]

這種方式在需要建立固定值填滿的列表時非常實用。

使用 list 函數初始化列表

list() 函數可用來將其他資料型別轉換為列表。例如可以將字串轉換為字元列表,或將 tuple 轉換為列表。

char_list = list("Python")
tuple_list = list((1, 2, 3))
print(char_list)  
# 輸出: ['P', 'y', 't', 'h', 'o', 'n']
print(tuple_list)  
# 輸出: [1, 2, 3]

 

2. 使用列表生成式初始化列表

列表生成式是 Python 中一種能讓程式碼更簡潔、更有效率的語法,尤其適合根據條件來初始化列表的情境。

基本的列表生成式

以下範例使用列表生成式來建立一個包含從 0 到 9 的整數的列表。

numbers = [i for i in range(10)]
print(numbers)  
# 輸出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

帶條件的列表生成式

也可以加入條件來建立特定的列表。以下範例會建立一個只包含偶數的列表:

even_numbers = [i for i in range(10) if i % 2 == 0]
print(even_numbers)  
# 輸出: [0, 2, 4, 6, 8]
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. 初始化二維列表

在 Python 中,可以透過列表中包含其他列表來表示多維陣列。這使得我們能夠處理像表格或矩陣這類的資料結構。

初始化二維列表的方法

以下是使用列表生成式來初始化一個 3×3 的二維列表的範例。這種方式可以確保每個內部列表都是獨立的,避免因為參照相同物件而導致意外的資料變更。

matrix = [[0 for _ in range(3)] for _ in range(3)]
print(matrix)  
# 輸出: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

注意事項:初始化二維列表時的參照問題

若使用 [[0] * 3] * 3 的方式建立二維列表,會導致每一列都參照同一個物件,當其中一列被修改時,其他列也會一起變動。透過列表生成式可以避免這種問題,讓每一列都是獨立的列表。

4. 操作列表的方法:新增與合併元素

Python 的列表可以在初始化後動態地新增或刪除元素,也可以與其他列表合併。以下將介紹一些基本的操作方法。

新增元素:append 方法

使用 append() 可以在列表的尾端加入新的元素。

my_list = [1, 2, 3]
my_list.append(4)
print(my_list)  
# 輸出: [1, 2, 3, 4]

插入元素:insert 方法

insert() 可以在列表中指定的位置插入元素。透過指定索引值,可以將元素插入到任意位置。

my_list = [1, 2, 3]
my_list.insert(1, 'new')
print(my_list)  
# 輸出: [1, 'new', 2, 3]

合併列表:使用 + 運算子

若要將多個列表合併為一個,可以使用 + 運算子來連接它們。

list1 = [1, 2, 3]
list2 = [4, 5]
combined_list = list1 + list2
print(combined_list)  
# 輸出: [1, 2, 3, 4, 5]

 

5. 其他初始化方法:array 模組與 NumPy

Python 提供了專門用於數值運算的 array 模組與 NumPy 函式庫,這些工具讓我們可以使用列表以外的資料結構來初始化陣列。

使用 array 模組進行初始化

Python 的 array 模組可以有效率地儲存相同資料型別的陣列,因此在記憶體使用上比一般列表更節省。

import array
int_array = array.array('i', [0] * 5)
print(int_array)  
# 輸出: array('i', [0, 0, 0, 0, 0])

使用 NumPy 初始化多維陣列

NumPy 函式庫可以高效地處理大型的多維陣列,特別是在進行科學運算或資料分析時非常常用。

import numpy as np
numpy_array = np.zeros((3, 3))
print(numpy_array)
# 輸出:
# [[0. 0. 0.]
#  [0. 0. 0.]
#  [0. 0. 0.]]

NumPy 的陣列在運算效能方面表現出色,與 Python 標準的列表相比,更適合用於大量資料的處理。

6. Python 陣列初始化方法總結

本文完整介紹了在 Python 中初始化列表與陣列的各種方法。透過理解每種初始化方式的優點,根據使用情境選擇合適的方式,能夠讓你寫出更高效、可讀性更佳的程式碼。

  • 建立空列表:使用 []list() 進行簡單初始化。
  • 列表生成式:依條件快速建立列表。
  • 多維列表:使用列表嵌套表示,並注意參照問題。
  • 元素新增與合併:使用 append()insert()+ 運算子進行彈性操作。
  • array 與 NumPy:適合數值與多維資料處理的資料結構。

只要掌握各種方法與函式庫的特性,根據需求適當使用,就能靈活掌握 Python 的列表與陣列初始化技巧。