HOWTO · Python
在 Python 中從列表中刪除重複項
在本文中,我們將討論如何在 Python 中使用集合資料結構和 OrderDict 從一個列表中刪除重複的內容。
本頁內容
Python 中的列表是一個資料結構,用於以特定的順序儲存資料。列表可以儲存多種型別的資料,即 int、float、字串、另一個列表等。列表是可突變的,這意味著一旦建立的值可以在以後改變。它用方括號 [] 表示。
myList = [2, 1, 2, 3, 0, 6, 7, 6, 4, 8]
print(myList)
輸出:
[2, 1, 2, 3, 0, 6, 7, 6, 4, 8]
你可以使用 for 迴圈從上述列表中刪除重複的元素,如下所示。
myList = [2, 1, 2, 3, 0, 6, 7, 6, 4, 8]
resultantList = []
for element in myList:
if element not in resultantList:
resultantList.append(element)
print(resultantList)
輸出:
[2, 1, 3, 0, 6, 7, 4, 8]
如果你不想寫這麼多程式碼,那麼在 Python 中,有兩種最流行的方法可以從 List 中刪除重複的元素。
- 如果你不想在刪除重複元素後還保持列表內元素的順序,那麼你可以使用
Set資料結構。 - 如果你想在刪除重複元素後保持列表內元素的順序,那麼你可以使用名
OrderedDict。
使用 Python 中的 set() 函式從列表中刪除重複元素
為了從列表中刪除重複的內容,我們可以使用另一種叫做 Set 的資料結構。集合是一種無序資料型別,只包含唯一的值。集合儲存值的順序與你可能在集合中插入元素的順序不同。集合使用大括號 {} 來表示。
所以,每當你列印儲存在集合裡面的元素,那麼輸出的順序就會不同。這就是為什麼不能對集合進行索引的原因,因為它是無序的。
mySet = {80, 10, 50, 18, 3, 50, 8, 18, 9, 8}
print(mySet)
輸出:
{3, 8, 9, 10, 80, 18, 50}
請注意,在我們列印出元素後,元素的順序是如何改變的。
在一個集合中,不允許有重複的元素,這意味著如果你多次擁有同一個元素,那麼集合將把它視為一個元素。這就是為什麼我們在 Python 中使用集合從一個列表中刪除重複元素的原因。
original_list = [80, 10, 50, 18, 3, 50, 8, 18, 9, 8]
print("Original List is: ", original_list)
convert_list_to_set = set(original_list)
print("Set is: ", convert_list_to_set)
new_list = list(convert_list_to_set)
print("Resultant List is: ", new_list)
original_list = list(convert_list_to_set)
print("Removed duplicates from original list: ", original_list)
輸出:
Original List is: [80, 10, 50, 18, 3, 50, 8, 18, 9, 8]
Set is: {3, 8, 9, 10, 80, 18, 50}
Resultant List is: [3, 8, 9, 10, 80, 18, 50]
Removed duplicates from original list: [3, 8, 9, 10, 80, 18, 50]
我們通過應用 set() 函式將一個列表轉換為一個集合。然後,我們通過應用 list() 函式將已經去掉重複的轉換後的集合轉換為一個 list。
在 Python 中使用 OrderDict 來刪除重複的內容並維持列表的順序
使用集合來刪除重複元素的問題是,它並不按特定順序儲存元素。因此,如果你不關心元素在結果列表中的儲存順序,即你在刪除重複元素後建立的列表,那麼在這種情況下,你可以使用 Set 資料結構。
但是如果你想在刪除重複的元素後保持列表中元素的順序,那麼你可以使用 Python 中的 OrderedDict。OrderDict 保留了元素在列表中被插入的順序。要使用 OrderDict,你首先要從 Python 的 collections 模組中匯入它 from collections import OrderedDict。
from collections import OrderedDict
myList = [2, 1, 2, 3, 0, 6, 7, 6, 8, 0, 4, 8]
final_list = list(OrderedDict.fromkeys(myList))
print(final_list)
輸出:
[2, 1, 3, 0, 6, 7, 8, 4]