Python 中的串列(List)詳解:新手指南
更新日期: 2024 年 9 月 26 日
在 Python 編程中,串列(List) 是一種非常重要且常用的資料結構。
它允許您存儲和操作一系列的元素,這些元素可以是任何類型,包括數字、字串、甚至其他串列。
對於剛開始學習 Python 的新手來說,掌握串列的概念和用法是至關重要的。
本文將詳細介紹 Python 中的串列,從基本操作到高級用法,幫助您在實際編程中靈活運用。
什麼是串列?
串列(List)是 Python 中的一種有序、可變的資料集合,用於存儲一系列項目。
串列使用方括號 [] 表示,串列中的元素之間用逗號分隔。
示例:
# 空串列
my_list = []
# 帶有初始值的串列
my_list = [1, 2, 3, 4, 5]
串列的特點:
- 有序性:串列中的元素按照添加的順序存儲。
- 可變性:可以修改、添加、刪除串列中的元素。
- 多樣性:串列中的元素可以是不同的資料類型。
訪問串列元素
可以使用索引,來訪問串列中的元素。
Python 的索引從 0 開始,負索引則從串列末尾開始計算。
示例:
my_list = ['apple', 'banana', 'cherry', 'date']
# 訪問第一個元素
print(my_list[0]) # 輸出:apple
# 訪問最後一個元素
print(my_list[-1]) # 輸出:date
修改串列元素
串列是可變的,這意味著您可以修改串列中的元素。
示例:
my_list = [10, 20, 30, 40]
# 修改第二個元素
my_list[1] = 25
print(my_list) # 輸出:[10, 25, 30, 40]
添加和刪除元素
添加元素
- append() 方法:在串列末尾添加一個元素。
my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # 輸出:[1, 2, 3, 4]
- insert() 方法:在指定位置插入一個元素。
my_list = [1, 2, 3, 4]
my_list.insert(1, 'a')
print(my_list) # 輸出:[1, 'a', 2, 3, 4]
刪除元素
- remove() 方法:移除串列中第一次出現的指定值。
my_list = [1, 'a', 2, 3, 4]
my_list.remove('a')
print(my_list) # 輸出:[1, 2, 3, 4]
- pop() 方法:移除並返回指定位置的元素,默認為最後一個元素。
my_list = [1, 2, 3, 4]
last_item = my_list.pop()
print(last_item) # 輸出:4
print(my_list) # 輸出:[1, 2, 3]
- del 關鍵字:刪除指定索引的元素或整個串列。
my_list = [1, 2, 3]
del my_list[0]
print(my_list) # 輸出:[2, 3]
串列的其他常用方法
- len() 函數:獲取串列的長度。
my_list = [2, 3]
length = len(my_list)
print(length) # 輸出:2
- sort() 方法:對串列進行排序。
my_list = [3, 1, 4, 2]
my_list.sort()
print(my_list) # 輸出:[1, 2, 3, 4]
- reverse() 方法:反轉串列中的元素順序。
my_list = [4, 3, 2, 1]
my_list.reverse()
print(my_list) # 輸出:[4, 3, 2, 1]
- count() 方法:返回指定元素在串列中出現的次數。
my_list = [3, 1, 4, 2]
count = my_list.count(2)
print(count) # 輸出:1
index()
方法:返回指定元素在串列中的索引。
my_list = [4, 3, 2, 1]
index = my_list.index(3)
print(index) # 輸出:1
串列的遍歷
可以使用 for 迴圈遍歷串列中的每個元素。
示例:
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
print(fruit)
輸出:
apple
banana
cherry
串列的切片
切片允許您獲取串列中的一部分。
語法: list[start:stop:step]
示例:
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 獲取前三個元素
print(numbers[:3]) # 輸出:[0, 1, 2]
# 獲取從索引 3 到索引 6 的元素
print(numbers[3:7]) # 輸出:[3, 4, 5, 6]
# 每隔一個元素取一次
print(numbers[::2]) # 輸出:[0, 2, 4, 6, 8]
串列的複製
在 Python 中,直接將一個串列賦值給另一個變量,兩者將引用同一個串列。
list1 = [1, 2, 3]
list2 = list1
list2.append(4)
print(list1) # 輸出:[1, 2, 3, 4]
為了創建串列的副本,可以使用以下方法:
- 切片複製
list2 = list1[:]
- copy() 方法
list2 = list1.copy()
串列的嵌套
串列可以包含其他串列,從而創建多維串列(矩陣)。
示例:
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 訪問元素
print(matrix[0][1]) # 輸出:2
串列推導式(List Comprehension)
串列推導式是一種在 Python 中創建新列表的簡潔而有力的語法。
它允許你從一個已有的可迭代對象(如列表、元組、字串等)創建一個新的列表,同時可以對元素進行操作,甚至加入條件過濾。
基本語法:
new_list = [expression for item in iterable if condition]
- new_list:要創建的新列表。
- expression:對每個元素進行的操作,可以是元素本身或對其進行的計算。
- for item in iterable:遍歷一個可迭代對象中的每個元素。
- if condition(可選):過濾條件,只有滿足條件的元素才會被包含在新列表中。
示例:
# 創建一個包含 1 到 10 的列表
numbers = [x for x in range(1, 11)]
print(numbers) # 輸出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 創創建一個包含偶數的列表
evens = [x for x in range(1, 21) if x % 2 == 0]
print(evens) # 輸出:[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
# 將一個列表中的字串轉換為大寫
fruits = ['apple', 'banana', 'cherry']
uppercase_fruits = [fruit.upper() for fruit in fruits]
print(uppercase_fruits) # 輸出:['APPLE', 'BANANA', 'CHERRY']
# 創建一個包含 0 到 9 的平方的串列
squares = [x**2 for x in range(10)]
print(squares) # 輸出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
串列與其他資料結構的比較
- 元組(Tuple):類似於串列,但不可變(immutable),使用小括號
()
表示。 - 集合(Set):無序且不重複的元素集合,使用大括號
{}
表示。 - 字典(Dictionary):鍵-值對集合,使用大括號
{}
表示。
實際應用示例
數據統計
scores = [85, 90, 78, 92, 88]
average = sum(scores) / len(scores)
print(f"平均分數為:{average}")
篩選數據
numbers = [1, 2, 3, 4, 5, 6]
# 獲取偶數串列
evens = [num for num in numbers if num % 2 == 0]
print(evens) # 輸出:[2, 4, 6]
處理字符串串列
names = ['Alice', 'Bob', 'Charlie']
# 將所有名字轉為大寫
upper_names = [name.upper() for name in names]
print(upper_names) # 輸出:['ALICE', 'BOB', 'CHARLIE']
小結
Python 中的串列是一種強大而靈活的資料結構,掌握串列的基本操作和高級用法,將極大地提高您的編程能力。
在實際開發中,串列被廣泛應用於各種場景,如數據存儲、處理和傳遞等。建議您多多練習,熟悉串列的各種操作。