前面提到變數為程式儲存資料的地方,一個變數可以儲存一個學生的成績、一個人的身高、或是一個人名等,但如果多人的資料要管理,為每個人設計一個變數顯然就有點不切實際,串列就是用來解決這樣的問題。
串列
Python的串列可以包含相同型別的元素,例如記錄一個國家的城市,也可以包含不同型別的元素,例如記錄一個人的姓名、身高、體重等個人資料。
city = ["台北", "桃園", "新竹", "台中", "台南"] print(city)
['台北', '桃園', '新竹', '台中', '台南']
student = ["小明", 140, 45] print(student)
['小明', 140, 45]
讀取串列元素
我們可以利用串列的索引值(index),來讀取串列的內容,Python的串列索引是標記相對於第一個元素的位置,因此第一個元素的索引值為0、第二個元素的索引值為1,以此類推。此外,若索引值是-1,代表的是串列的最後一個元素、若索引值是-2,代表的是串列的倒數第二個元素,以此類推。
print(student[0])
小明 print(student[1])
140 print(student[2])
45 print(student[-1])
45 print(student[-2])
140 print(student[-3])
小明
若要同時取得串列中的多個元素,可用串列切片(slice)的方式:
- list[a:b] # 取得串列索引值為a到(b-1)的元素
- list[:a] # 取得串列前a個元素
- list[a:] # 取得串列索引值為a到最後一個元素
- list[a:b:c] # 以c為間隔取得串列索引值為a到(b-1)的元素
- list[:] # 取得串列所有元素
例如:
print(city[2:5])
['新竹', '台中', '台南'] print(city[:2])
['台北', '桃園'] print(city[2:])
['新竹', '台中', '台南'] print(city[1:5:2])
['桃園', '台中'] print(city[:])
['台北', '桃園', '新竹', '台中', '台南']
修改串列元素
串列可指定索引值修改其內容:
student[2] = 50 print(student)
['小明', 140, 50]
增加串列元素
當需要在串列後方增加串列元素時,若使用超出串列長度的索引值來修改串列的內容,程式會產生錯誤。
city[5] = "宜蘭"
Traceback (most recent call last): File "stdin", line 1, in module
IndexError: list assignment index out of range
有幾種方法可以達成這個目標:
city = city + ["宜蘭"] print(city)
['台北', '桃園', '新竹', '台中', '台南', '宜蘭']
- 使用append()方法,將新的元素或串列加到串列的尾端。若為串列,則加入後會以串列的形式存在,也就是串列中有元素是串列。
city.append(["花蓮", "台東"]) print(city)
['台北', '桃園', '新竹', '台中', '台南', '宜蘭', ['花蓮', '台東']]
- 使用extend()方法,將新的串列加到串列的尾端。和append()不同的是,串列會拆解為元素一一加入串列的尾端。
city.extend(["澎湖", "金門"]) print(city)
['台北', '桃園', '新竹', '台中', '台南', '宜蘭', ['花蓮', '台東'], '澎湖', '金門']
- 使用insert()方法,將新的元素或串列插入指定的位置。
city.insert(4, "嘉義") print(city)
['台北', '桃園', '新竹', '台中', '嘉義', '台南', '宜蘭', ['花蓮', '台東'], '澎湖', '金門']
刪除串列元素
del city[4] print(city)
['台北', '桃園', '新竹', '台中', '台南', '宜蘭', ['花蓮', '台東'], '澎湖', '金門']
- 使用pop()將串列中指定的元素刪除,並回傳刪除的元素;若沒有指定,則會刪除串列中最後一個元素。
city.pop()
'金門' print(city)
['台北', '桃園', '新竹', '台中', '台南', '宜蘭', ['花蓮', '台東'], '澎湖'] city.pop(7)
'澎湖' print(city)
['台北', '桃園', '新竹', '台中', '台南', '宜蘭', ['花蓮', '台東']]
- 使用remove()將串列中第一個等於指定的元素的值刪除。
city.remove("宜蘭") print(city)
['台北', '桃園', '新竹', '台中', '台南', ['花蓮', '台東']]
程式範例