在 Python 中從列表中刪除重複項

Sahil Bhosale 2023年1月30日 2021年2月7日
  1. 使用 Python 中的 set() 函式從列表中刪除重複元素
  2. 在 Python 中使用 OrderDict 來刪除重複的內容並維持列表的順序
在 Python 中從列表中刪除重複項

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 中刪除重複的元素。

  1. 如果你不想在刪除重複元素後還保持列表內元素的順序,那麼你可以使用 Set 資料結構。
  2. 如果你想在刪除重複元素後保持列表內元素的順序,那麼你可以使用名 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 中的 OrderedDictOrderDict 保留了元素在列表中被插入的順序。要使用 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]
Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

相關文章 - Python List