本文由編程獅(w3cschool.cn)原創(chuàng),專為零基礎小白設計,跟著敲 3 分鐘就能學會!
一、為什么要給列表去重?
在真實項目開發(fā)中,我們經常遇到 重復數據:
- 從 Excel 導入的用戶名單有重名
- 爬蟲抓取的熱門文章標題出現重復
- 用戶點擊日志里同一按鈕被記錄了多次
如果不及時去重,不僅浪費內存,還會導致統(tǒng)計結果失真。今天編程獅就帶你用 最接地氣 的方式,學會 Python 列表去重。
二、方法 1:一行代碼搞定(推薦新手)
核心思路
利用 字典 key 唯一 的特性,把列表元素當 key,重復值自動被過濾。
代碼示例(來自編程獅在線編輯器)
城市列表 = ["北京", "上海", "北京", "廣州", "上海"]
去重后 = list(dict.fromkeys(城市列表))
print("去重結果:", 去重后) # 輸出:['北京', '上海', '廣州']
在編程獅(w3cschool.cn)Python3在線環(huán)境里直接復制粘貼即可運行,無需安裝任何軟件!
優(yōu)點
- 代碼最短,適合小白
- 保留原始順序(Python 3.7+ 字典有序)
三、方法 2:使用 set()(適合不要求順序的場景)
代碼示例
城市列表 = ["北京", "上海", "北京", "廣州", "上海"]
去重后 = list(set(城市列表))
print("去重結果:", 去重后) # 順序可能變化,如['上海', '北京', '廣州']
注意
set()
會打亂原順序,如果你不關心順序,用它最省事。
四、方法 3:寫個函數,復用更方便(進階)
把方法 1 封裝成函數,以后任何列表都能一鍵去重。
代碼示例(W3Cschool 標準模板)
def 列表去重(任意列表):
"""編程獅推薦:通用去重函數"""
return list(dict.fromkeys(任意列表))
# 測試
水果 = ["蘋果", "香蕉", "蘋果", "橙子"]
print(列表去重(水果)) # ['蘋果', '香蕉', '橙子']
五、3 分鐘實戰(zhàn):去除用戶積分排行榜重復昵稱
假設你從數據庫查到如下數據:
積分榜 = ["小明", "小紅", "小剛", "小明", "小紅"]
跟著編程獅敲 3 行代碼:
積分榜 = ["小明", "小紅", "小剛", "小明", "小紅"]
唯一榜單 = list(dict.fromkeys(積分榜))
print("排行榜去重后:", 唯一榜單)
# 輸出:['小明', '小紅', '小剛']
把結果直接回寫到數據庫,再也不怕重復統(tǒng)計啦!
六、常見疑問 FAQ
問題 | 編程獅解答 |
---|---|
會不會改變原列表? | 不會,三種方法都返回新列表,原列表安全。 |
字典法為什么能保留順序? | Python 3.7 起字典有序,dict.fromkeys() 會按第一次出現的順序記錄。 |
性能哪個最好? | 數據量 <10 萬時三者差異不大;超大數據推薦 pandas.drop_duplicates() ,我們下期再講。 |
七、小結
方法 | 是否保留順序 | 代碼長度 | 推薦指數 |
---|---|---|---|
dict.fromkeys() | ? | 1 行 | ????? |
set() | ? | 1 行 | ??? |
自定義函數 | ? | 3 行 | ???? |
零基礎同學先掌握 方法 1,工作中 90% 場景夠用!
八、在線練習
- 訪問 Python3 入門課程 邊學邊練!
- 訪問 W3Cschool 在線 Python3 編譯器 直接練習。
- 利用 W3Cschool 在線免費去重工具校驗去重結果。