Skip to content

[Python] List 列表的常見操作方法

Last Updated on 2021-10-11 by Clay

List(列表)是 Python 中最著名的儲存資料的方法,每一個元素(element)可能是一個數值、也有可能是一個字串;而每一個元素都有一個自己的索引(index),從 0 開始計數。

今天我想仔細地紀錄,Python 中的 List 究竟該如何操作。我會分成以下幾個小節來解釋:

  • 初始化 List
  • 訪問 List 中的元素
  • 更新 List 中的元素
  • 刪除 List 中的元素
  • List 中常見的操作方法

初始化 List

我們要將一個變數賦值 List 十分簡單,可以使用 list() 或是 [] 來建立;如果有要初始化在 List 中的元素,可以直接填在方括號內。

值得注意的是,Python 中 List 的元素並不用全部都是同樣的資料型態,如同下方的範例程式碼,你可以同時放入整數(int)及字串(string)。

而每個元素之間,都需要使用逗號 , 隔開。

List_1 = list()
List_2 = []
List_3 = [1, 2, "hello"]

print("List_1:", List_1)
print("List_2:", List_2)
print("List_3:", List_3)


Output:

List_1: []
List_2: []
List_3: [1, 2, 'hello']



訪問 List 中的元素

如果只是要印出 List 中的元素的話,我們可以直接使用 for 來取得元素值並印出;但除此之外,也可以使用索引(index)來一個個印出對應的元素。

在 Python 中,如果沒有要做跟索引有關的判斷的話,建議直接取得元素值,程式的執行效率較佳。

List = [1, 2, "hello"]


# Method 1
for element in List:
    print(element)


# Method 2
for i in range(len(List)):
    print(List[i])


Output:

1
2
hello
1
2
hello


可以看到,兩種方法都可以印出所有的元素值。


看過了如何印出元素後,來看看 Python 中對於 List 的其他存取技巧。

  • 如果要求的索引值大於等於 List 的長度,會發生 IndexError: list index out of range 的報錯
  • 可以使用負數索引,會倒著存取 List 的元素
  • : 是遍歷所有元素值的符號,假設你使用 n:m 來存取 List,那麼便會從索引 n 的元素讀取到索引 m-1 的元素為止
List = [1, 2, "hello"]

print("List:", List)
print("List[-1]:", List[-1])
print("List[1:]:", List[1:])
print("List[-2:]:", List[-2:])
print("List[3]:", List[3])


Output:

List: [1, 2, 'hello']
List[-1]: hello
List[1:]: [2, 'hello']
List[-2:]: [2, 'hello']
Traceback (most recent call last):
  File "/Users/clay/Projects/PythonProjects/python_children_edu/try.py", line 7, in <module>
    print("List[3]:", List[3])
IndexError: list index out of range


這裡能研究的東西很多,請盡情地嘗試不同的寫法,相信對於 Python List 的使用會更加得心應手。


更新 List 中的元素

更新 List 中的元素非常單純,只需要替指定索引的元素賦值即可。

List = [1, 2, "hello"]

# Update
List[2] = 3
print(List)


Output:

[1, 2, 3]



刪除 List 中的元素

刪除 List 中指定索引的元素,可以使用 del 語法。

List = [1, 2, "hello"]

# Delete
del List[0]
print(List)


Output:

[2, 'hello']



List 中常見的操作

List 中有許多常見的操作方法,包含以下:

  • list.append(x): 將一項新元素添加至 List 的末端
  • list.extend(iterable): 將新的可迭代物件元素添加至 List 的末端
  • list.insert(i, x): 在特定索引 i 的位置插入新的元素
  • list.remove(x): 在 List 中刪除第一項值為 x 的元素
  • list.pop([i]): 刪除 List 中指定索引的元素並返回。如果未指定索引,則刪除返回 List 中的最後一項
  • list.clear(): 清空整個 List
  • list.index(x): 返回元素為 x 的索引值
  • list.count(x): 計算 List 中有多少元素為 x
  • list.sort(reverse=False): 對 List 中的元素進行排序
  • list.reverse(): 反轉 List 中的所有元素
  • list.copy(): 返回 List 的淺複製(shallow copy)


list.append(x)

List = [1, 2, 3]

# Append
List.append(4)
print(List)


Output:

[1, 2, 3, 4]



list.extend(iterable)

List = [1, 2, 3]
iterable = [4, 5, 6]

# Extend
List.extend(iterable)
print(List)


Output:

[1, 2, 3, 4, 5, 6]



list.insert(i, x)

List = [1, 2, 3]

# Insert
List.insert(1, 1.5)
print(List)


Output:

[1, 1.5, 2, 3]



list.remove(x)

List = [1, 2, 3]

# Remove
List.remove(2)
print(List)


Output:

[1, 3]



list.pop([i])

List = [1, 2, 3]

# Pop
List.pop()
print(List)


Output:

[1, 2]



list.clear()

List = [1, 2, 3]

# Clear
List.clear()
print(List)


Output:

[]



list.index(x)

List = [1, 2, 3]

# Index
print(List.index(3))


Output:

2



list.count(x)

List = [1, 2, 3]

# Count
print(List.count(3))


Output:

1



list.sort()

  • reverse=False 為從小排到大
  • reverse=True 為大排到小
List = [1, 2, 3]

# Sort
List.sort(reverse=True)
print(List)


Output:

[3, 2, 1]



list.reverse()

List = [1, 2, 3]

# Reverse
List.reverse()
print(List)


Output:

[3, 2, 1]



list.copy()

如果不是使用 list.copy() 而是直接賦值的話,元素間是共享記憶體位置的;這樣的壞處是,如果你更動了原始的 List,那你賦值的 List 底下的元素也會隨之變動。

這樣很容易引起程式錯誤。

我們來簡單看個對比的範例:

List = [1, 2, 3]

# Copy
List_assign = List
List_copy = List.copy()

# Change element
List[1] = 20
print("List:", List)
print("List_assign:", List_assign)
print("List_copy:", List_copy)


Output:

List: [1, 20, 3]
List_assign: [1, 20, 3]
List_copy: [1, 2, 3]




References


Read More

Tags:

Leave a Reply