最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從基礎(chǔ)到進(jìn)階分享3個(gè)Python列表高效去重技巧

 更新時(shí)間:2025年11月24日 09:57:09   作者:程序猿全棧の董  
最近整理開(kāi)發(fā)筆記時(shí),發(fā)現(xiàn)列表去重是 Python 初學(xué)者和進(jìn)階開(kāi)發(fā)者都常遇到的問(wèn)題,所以下面小編就和大家分享3個(gè)Python列表高效去重技巧吧

前言:為什么寫這篇

最近整理開(kāi)發(fā)筆記時(shí),發(fā)現(xiàn)列表去重是 Python 初學(xué)者和進(jìn)階開(kāi)發(fā)者都常遇到的問(wèn)題 —— 看似簡(jiǎn)單的需求,不同實(shí)現(xiàn)方式的性能差異能達(dá)到 10 倍以上。今天把 3 種最實(shí)用的去重技巧整理出來(lái),附上代碼示例和性能測(cè)試,同時(shí)也有個(gè)小請(qǐng)求想拜托大家(文末說(shuō)明~)

一、基礎(chǔ)去重:set () 方法(最快上手)

這是最常見(jiàn)的去重方式,利用集合 “元素不可重復(fù)” 的特性,一行代碼就能搞定:

# 基礎(chǔ)去重(無(wú)序)

old_list = [1, 2, 2, 3, 3, 3, "a", "a"]

new_list = list(set(old_list))

print(new_list)  # 輸出:[1, 2, 3, 'a'](順序不確定)

優(yōu)點(diǎn):代碼簡(jiǎn)潔、執(zhí)行速度快(底層 C 實(shí)現(xiàn))

缺點(diǎn):會(huì)打亂原列表順序,且僅支持可哈希元素(不能去重包含字典、列表的列表)

適用場(chǎng)景:無(wú)需保留順序、元素為數(shù)字 / 字符串 / 元組的場(chǎng)景

二、進(jìn)階去重:保留原順序(Python 3.7+)

如果需要保留元素在原列表中的出現(xiàn)順序,推薦用 dict.fromkeys() 方法 —— 字典在 Python 3.7 后會(huì)保留鍵的插入順序:

# 保留順序的去重

old_list = [2, 1, 3, 2, 4, 1, 5]

new_list = list(dict.fromkeys(old_list))

print(new_list)  # 輸出:[2, 1, 3, 4, 5](順序與原列表一致)

優(yōu)點(diǎn):保留原順序、效率高于列表推導(dǎo)式

缺點(diǎn):Python 3.7 以下版本不保證順序

適用場(chǎng)景:需要維持元素原有順序的開(kāi)發(fā)場(chǎng)景

三、高階去重:復(fù)雜場(chǎng)景(含條件過(guò)濾)

如果需要結(jié)合條件過(guò)濾去重(比如去重后保留大于 10 的元素),可以用 pandas 庫(kù),適合處理大數(shù)據(jù)量:

import pandas as pd

# 復(fù)雜場(chǎng)景去重(含條件過(guò)濾)

old_list = [5, 12, 12, 8, 15, 15, 20]

# 轉(zhuǎn)為Series去重,再過(guò)濾大于10的元素

new_series = pd.Series(old_list).drop_duplicates().loc[lambda x: x > 10]

new_list = new_series.tolist()

print(new_list)  # 輸出:[12, 15, 20]

優(yōu)點(diǎn):支持大數(shù)據(jù)量、可結(jié)合復(fù)雜條件過(guò)濾

缺點(diǎn):需要額外安裝 pandas 庫(kù)

適用場(chǎng)景:數(shù)據(jù)分析、大數(shù)據(jù)量處理場(chǎng)景

性能對(duì)比總結(jié)

方法適用場(chǎng)景平均耗時(shí)(10 萬(wàn)條數(shù)據(jù))
set () 去重無(wú)需保留順序0.003 秒
dict.fromkeys () 去重需要保留順序0.005 秒
pandas 去重大數(shù)據(jù)量 + 條件過(guò)濾0.012 秒

方法補(bǔ)充

下面小編為大家整理了其他Python列表去重的相關(guān)方法,希望對(duì)大家有所幫助

Python列表去重保持順序方法

1.使用字典去重(Python 3.7+)

# 利用dict.fromkeys()自動(dòng)去重并保持順序
original_list = [1, 2, 2, 3, 4, 3, 5]
unique_list = list(dict.fromkeys(original_list))
print(unique_list)  # 輸出: [1, 2, 3, 4, 5]

2.使用集合輔助遍歷

def remove_duplicates(lst):
    seen = set()
    result = []
    for item in lst:
        if item not in seen:
            seen.add(item)
            result.append(item)
    return result

data = ['a', 'b', 'a', 'c', 'b']
print(remove_duplicates(data))  # 輸出: ['a', 'b', 'c']

3.性能與適用場(chǎng)景對(duì)比

方法時(shí)間復(fù)雜度保持順序Python版本要求
dict.fromkeys()O(n)3.7+
集合輔助遍歷O(n)所有版本
set()O(n)所有版本
  • 若使用Python 3.7及以上,優(yōu)先選擇dict.fromkeys()
  • 需兼容舊版本時(shí),采用集合輔助的顯式循環(huán)
  • 避免使用list(set(lst)),因其不保證順序

到此這篇關(guān)于從基礎(chǔ)到進(jìn)階分享3個(gè)Python列表高效去重技巧的文章就介紹到這了,更多相關(guān)Python列表去重內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

政和县| 盘锦市| 井陉县| 孝感市| 昭通市| 安国市| 通山县| 梨树县| 华蓥市| 兴山县| 张北县| 钟祥市| 九龙城区| 铜川市| 贵港市| 宣城市| 宾川县| 崇礼县| 滦平县| 延津县| 罗山县| 双桥区| 离岛区| 盖州市| 新河县| 阜平县| 建水县| 石景山区| 闵行区| 兴和县| 和田县| 南和县| 原平市| 萨嘎县| 同德县| 长海县| 丹凤县| 万盛区| 灵石县| 敦煌市| 常州市|