2021-12-09|閱讀時間 ‧ 約 6 分鐘

不間斷 Python 挑戰 Day 5 - 串列 (list)

前面提到變數為程式儲存資料的地方,一個變數可以儲存一個學生的成績、一個人的身高、或是一個人名等,但如果多人的資料要管理,為每個人設計一個變數顯然就有點不切實際,串列就是用來解決這樣的問題。

串列

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將串列中指定的元素刪除。
del city[4] print(city) ['台北', '桃園', '新竹', '台中', '台南', '宜蘭', ['花蓮', '台東'], '澎湖', '金門']
  • 使用pop()將串列中指定的元素刪除,並回傳刪除的元素;若沒有指定,則會刪除串列中最後一個元素。
city.pop() '金門' print(city) ['台北', '桃園', '新竹', '台中', '台南', '宜蘭', ['花蓮', '台東'], '澎湖'] city.pop(7) '澎湖' print(city) ['台北', '桃園', '新竹', '台中', '台南', '宜蘭', ['花蓮', '台東']]
  • 使用remove()將串列中第一個等於指定的元素的值刪除。
city.remove("宜蘭") print(city) ['台北', '桃園', '新竹', '台中', '台南', ['花蓮', '台東']]

程式範例

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.