Python List 串列

Python List(Python List)

這篇 Python List 教學將帶你認識 Python 最重要的資料結構:串列(List)。List 是一個有順序、可修改的容器,可以裝任何型別的資料。前面學的變數一次存一個值,List 讓你把一整批資料放在一起處理,搭配迴圈威力倍增。

建立 List

用中括號 [] 建立,元素以逗號分隔:

fruits = ["蘋果", "香蕉", "橘子"]
numbers = [1, 2, 3, 4, 5]
mixed = ["小明", 25, 175.5, True]   # 可混合不同型別
empty = []                           # 空串列

print(fruits)
print(len(fruits))   # 元素個數

執行輸出:

['蘋果', '香蕉', '橘子']
3

索引取值與修改

與字串相同,索引從 0 開始,負數從尾端數回來。不同的是 List 可以修改

fruits = ["蘋果", "香蕉", "橘子"]
print(fruits[0])     # 第一個
print(fruits[-1])    # 最後一個

fruits[1] = "芒果"   # 修改元素
print(fruits)

執行輸出:

蘋果
橘子
['蘋果', '芒果', '橘子']

常用方法總覽

方法說明範例
append(x)在尾端加入元素fruits.append("葡萄")
insert(i, x)在索引 i 插入元素fruits.insert(0, "草莓")
remove(x)移除第一個值為 x 的元素fruits.remove("蘋果")
pop(i)取出並移除索引 i 的元素(預設最後一個)fruits.pop()
sort()由小到大排序(原地修改)numbers.sort()
reverse()反轉順序numbers.reverse()
count(x)計算 x 出現次數numbers.count(3)
index(x)回傳 x 第一次出現的索引fruits.index("橘子")
scores = [80, 95, 60]

scores.append(75)        # 尾端加入
print(scores)

scores.insert(0, 100)    # 開頭插入
print(scores)

scores.remove(60)        # 移除指定值
print(scores)

last = scores.pop()      # 取出最後一個
print(last, scores)

scores.sort()            # 排序
print(scores)

scores.sort(reverse=True)  # 由大到小
print(scores)

執行輸出:

[80, 95, 60, 75]
[100, 80, 95, 60, 75]
[100, 80, 95, 75]
75 [100, 80, 95]
[80, 95, 100]
[100, 95, 80]

用 for 走訪 List

fruits = ["蘋果", "香蕉", "橘子"]

for fruit in fruits:
    print(fruit)

# 需要索引時用 enumerate()
for i, fruit in enumerate(fruits, start=1):
    print(f"{i}. {fruit}")

執行輸出:

蘋果
香蕉
橘子
1. 蘋果
2. 香蕉
3. 橘子

檢查元素是否存在

innot in

fruits = ["蘋果", "香蕉", "橘子"]
print("香蕉" in fruits)
print("芒果" not in fruits)

執行輸出:

True
True

常見錯誤

1. IndexError: list index out of range

索引超出範圍,例如對 3 個元素的 List 取 fruits[3](最大合法索引是 2)。取最後一個元素用 fruits[-1] 最安全。

2. ValueError: list.remove(x): x not in list

remove() 移除不存在的值。先用 if x in fruits: 檢查再移除。

3. 對 List 使用 = 不是複製

b = a 只是讓兩個名字指向同一個 List,改 b 會連 a 一起變。真正的複製要用 b = a.copy(),細節在下一篇切片會詳細說明。

總結

List 用 [] 建立、可修改、有順序;appendinsertremovepopsort 是最常用的五個方法;搭配 for 走訪、in 檢查存在。List 還有一個強大的功能——切片(Slicing),下一篇詳細介紹。

延伸閱讀