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