目次
1. 前言
在使用 Python 進行資料處理時,清單(list)中的重複元素常常會造成困擾。若資料中存在重複值,可能會導致處理速度變慢,甚至分析結果不準確。
本文將介紹如何使用 Python 移除清單中的重複元素。從容易上手的基本方法,到稍微進階的技巧,我們會一併說明,讓初學者也能輕鬆理解。
2. 移除重複元素的基本方法
首先,我們來看使用 Python 內建函式來移除重複元素的簡單方法。
使用 set()
移除重複
在 Python 中,利用 set
類型可以輕鬆地移除清單中的重複元素。
範例
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set(original_list))
print(unique_list) # 輸出範例: [1, 2, 3, 4, 5]
說明
set
是一種集合資料型別,不允許重複元素。透過這個特性,我們可以快速移除清單中的重複值。
注意事項
- 使用
set()
時,原本清單中的順序會被打亂。 - 如果你希望保留元素的原始順序,請參考下一節的方法。
3. 保留順序的情況下移除重複元素的方法
如果你希望在保留原始順序的情況下移除重複元素,可以使用以下的方法。
使用 dict.fromkeys()
的方法
範例
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(dict.fromkeys(original_list))
print(unique_list) # 輸出範例: [1, 2, 3, 4, 5]
說明
dict.fromkeys()
會使用清單中的每個項目作為鍵(key)建立字典(dictionary)。- 因為字典的鍵是唯一的,所以可以達到移除重複的效果。
- 從 Python 3.7 起,字典會保留插入的順序,因此也可以保留原清單的順序。
使用列表推導式(List Comprehension)的方法
範例
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = []
[unique_list.append(item) for item in original_list if item not in unique_list]print(unique_list) # 輸出範例: [1, 2, 3, 4, 5]
說明
- 使用列表推導式的方式,將未出現過的項目依序加入新的清單中。
- 對於資料量較小的清單來說,這個方法非常實用。
注意事項
當資料量變大時,這種方式的處理速度可能會變慢。
4. 移除二維清單中的重複資料
在處理二維清單時,set()
或 dict.fromkeys()
不能直接使用。本節將介紹如何移除二維清單中的重複項目。
使用列表推導式(List Comprehension)
範例
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = []
[unique_list.append(item) for item in original_list if item not in unique_list]
print(unique_list) # 輸出範例: [1, 2, 3, 4, 5]
說明
- 使用列表推導式的方式,可以有效過濾重複的子清單。
- 即使清單中包含巢狀結構,也能透過相同邏輯進行處理。
注意事項
若資料量很大,這種方法可能會影響效能,因此建議根據情境選擇最適合的方式。
5. 使用 Pandas 移除重複資料
Pandas 是一個功能強大的資料處理函式庫,提供方便的方法來刪除資料框(DataFrame)中的重複項目。
使用 drop_duplicates()
方法
範例
import pandas as pd
data = {'A': [1, 2, 2, 3], 'B': [4, 5, 5, 6]}
df = pd.DataFrame(data)
df = df.drop_duplicates()
print(df)
說明
drop_duplicates()
可以根據整個資料框或指定欄位來移除重複資料。- 透過
subset
參數,可以指定某些欄位作為判斷重複的依據。
6. 偵測與統計重複元素
在 Python 中,除了移除重複項目之外,能夠找出重複元素並統計其出現次數也是很實用的功能。本節會介紹如何使用 collections.Counter
與其他基本方法達成這個目標。
使用 collections.Counter
的方法
範例
from collections import Counter
original_list = [1, 2, 2, 3, 4, 4, 5, 5, 5]
count = Counter(original_list)
print(count) # 輸出範例: Counter({5: 3, 2: 2, 4: 2, 1: 1, 3: 1})
說明
Counter
會回傳一個字典格式,顯示每個元素與其對應的出現次數。- 透過這個方式,可以快速找出哪些元素重複出現。
找出重複項目的方法
範例
duplicates = [item for item, freq in count.items() if freq > 1]
print(duplicates) # 輸出範例: [2, 4, 5]
說明
- 使用
Counter
找出出現次數大於 1 的元素並放入新清單中。 - 這樣就可以輕鬆取得所有重複項目的清單。

7. 總結
以下是本文所介紹的各種移除重複項目方法的整理:
各種方法的優點與適用情境
方法 | 優點 | 注意事項 |
---|---|---|
使用 set() | 簡單且執行速度快 | 無法保留原始順序 |
使用 dict.fromkeys() | 可以在保留順序的情況下移除重複 | 僅在 Python 3.7 之後順序才有保證 |
列表推導式 | 彈性高、可保留順序 | 處理大量資料時效能可能變差 |
Pandas 的 drop_duplicates() | 適合處理資料框結構 | 需要先安裝 Pandas 函式庫 |
使用 collections.Counter | 可以輕鬆取得出現次數 | 大量資料時需注意效能表現 |
在 Python 中移除清單中的重複元素,根據資料的特性與處理需求,可以選擇最合適的方式。希望本篇教學能幫助你提升開發效率與資料處理能力!