从基础到进阶分享3个Python列表高效去重技巧

作者:

文章目录
  • 最近整理开发笔记时,发现列表去重是 Python 初学者和进阶开发者都常遇到的问题 —— 看似简单的需求,不同实现方式的性能差异能达到 10 倍以上。今天把 3 种最实用的去重技巧整理出来,附上代码示例和性能测试,同时也有个小请求想拜托大家(文末说明~)
  • 这是最常见的去重方式,利用集合 “元素不可重复” 的特性,一行代码就能搞定: # 基础去重(无序) old_list = [1, 2, 2, 3, 3, 3, “a”, “a”] new_list = list(set(old_list)) print(new_list) # 输出:[1, 2, 3, ‘a’](顺序不确定) 优点:代码简洁、执行速度快(底层 C 实现) 缺点:会打乱原列表顺序,且仅支持可哈希元素(不能去重包含字典、列表的列表) 适用场景:无需保留顺序、元素为数字 / 字符串 / 元组的场景
  • 如果需要保留元素在原列表中的出现顺序,推荐用 dict.fromkeys() 方法 —— 字典在 Python 3.7 后会保留键的插入顺序: # 保留顺序的去重 old_list = [2, 1, 3, 2, 4, 1, 5] new_list = list(dict.fromkeys(old_list)) print(new_list) # 输出:[2, 1, 3, 4, 5](顺序与原列表一致) 优点:保留原顺序、效率高于列表推导式 缺点:Python 3.7 以下版本不保证顺序 适用场景:需要维持元素原有顺序的开发场景
  • 如果需要结合条件过滤去重(比如去重后保留大于 10 的元素),可以用 pandas 库,适合处理大数据量: import pandas as pd # 复杂场景去重(含条件过滤) old_list = [5, 12, 12, 8, 15, 15, 20] # 转为Series去重,再过滤大于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] 优点:支持大数据量、可结合复杂条件过滤 缺点:需要额外安装 pandas 库 适用场景:数据分析、大数据量处理场景
  • 方法 适用场景 平均耗时(10 万条数据) set () 去重 无需保留顺序 0.003 秒 dict.fromkeys () 去重 需要保留顺序 0.005 秒 pandas 去重 大数据量 + 条件过滤 0.012 秒
  • 下面小编为大家整理了其他Python列表去重的相关方法,希望对大家有所帮助 Python列表去重保持顺序方法 1.使用字典去重(Python 3.7+) # 利用dict.fromkeys()自动去重并保持顺序 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.性能与适用场景对比 方法 时间复杂度 保持顺序 Python版本要求 dict.fromkeys() O(n) 是 3.7+ 集合辅助遍历 O(n) 是 所有版本 set() O(n) 否 所有版本 若使用Python 3.7及以上,优先选择dict.fromkeys() 需兼容旧版本时,采用集合辅助的显式循环 避免使用list(set(lst)),因其不保证顺序 到此这篇关于从基础到进阶分享3个Python列表高效去重技巧的文章就介绍到这了,更多相关Python列表去重内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python列表去重的六种方法及对比详解 Python列表去重的4种核心方法与实战指南详解 Python对list列表进行去重的几种方法 Python中字符串和列表去重方法总结 Python列表去重的几种方法整理 python列表去重的5种常见方法实例 Python列表去重复项的N种方法(实例代码) 对python中两种列表元素去重函数性能的比较方法 Python对列表去重的多种方法(四种方法)
  • 目录
    • 前言:为什么写这篇
    • 一、基础去重:set () 方法(最快上手)
    • 二、进阶去重:保留原顺序(Python 3.7+)
    • 三、高阶去重:复杂场景(含条件过滤)
    • 性能对比总结
    • 方法补充

    最近整理开发笔记时,发现列表去重是 Python 初学者和进阶开发者都常遇到的问题 —— 看似简单的需求,不同实现方式的性能差异能达到 10 倍以上。今天把 3 种最实用的去重技巧整理出来,附上代码示例和性能测试,同时也有个小请求想拜托大家(文末说明~)

    这是最常见的去重方式,利用集合 “元素不可重复” 的特性,一行代码就能搞定:

    # 基础去重(无序)
    
    old_list = [1, 2, 2, 3, 3, 3, "a", "a"]
    
    new_list = list(set(old_list))
    
    print(new_list)  # 输出:[1, 2, 3, 'a'](顺序不确定)
    

    优点:代码简洁、执行速度快(底层 C 实现)

    缺点:会打乱原列表顺序,且仅支持可哈希元素(不能去重包含字典、列表的列表)

    适用场景:无需保留顺序、元素为数字 / 字符串 / 元组的场景

    如果需要保留元素在原列表中的出现顺序,推荐用 dict.fromkeys() 方法 —— 字典在 Python 3.7 后会保留键的插入顺序:

    # 保留顺序的去重
    
    old_list = [2, 1, 3, 2, 4, 1, 5]
    
    new_list = list(dict.fromkeys(old_list))
    
    print(new_list)  # 输出:[2, 1, 3, 4, 5](顺序与原列表一致)
    

    优点:保留原顺序、效率高于列表推导式

    缺点:Python 3.7 以下版本不保证顺序

    适用场景:需要维持元素原有顺序的开发场景

    如果需要结合条件过滤去重(比如去重后保留大于 10 的元素),可以用 pandas 库,适合处理大数据量:

    import pandas as pd
    
    # 复杂场景去重(含条件过滤)
    
    old_list = [5, 12, 12, 8, 15, 15, 20]
    
    # 转为Series去重,再过滤大于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]
    

    优点:支持大数据量、可结合复杂条件过滤

    缺点:需要额外安装 pandas 库

    适用场景:数据分析、大数据量处理场景

    方法 适用场景 平均耗时(10 万条数据)
    set () 去重 无需保留顺序 0.003 秒
    dict.fromkeys () 去重 需要保留顺序 0.005 秒
    pandas 去重 大数据量 + 条件过滤 0.012 秒

    下面小编为大家整理了其他Python列表去重的相关方法,希望对大家有所帮助

    Python列表去重保持顺序方法

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

    # 利用dict.fromkeys()自动去重并保持顺序
    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.性能与适用场景对比

    方法 时间复杂度 保持顺序 Python版本要求
    dict.fromkeys() O(n) 3.7+
    集合辅助遍历 O(n) 所有版本
    set() O(n) 所有版本
    • 若使用Python 3.7及以上,优先选择dict.fromkeys()
    • 需兼容旧版本时,采用集合辅助的显式循环
    • 避免使用list(set(lst)),因其不保证顺序

    到此这篇关于从基础到进阶分享3个Python列表高效去重技巧的文章就介绍到这了,更多相关Python列表去重内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Python列表去重的六种方法及对比详解
    • Python列表去重的4种核心方法与实战指南详解
    • Python对list列表进行去重的几种方法
    • Python中字符串和列表去重方法总结
    • Python列表去重的几种方法整理
    • python列表去重的5种常见方法实例
    • Python列表去重复项的N种方法(实例代码)
    • 对python中两种列表元素去重函数性能的比较方法
    • Python对列表去重的多种方法(四种方法)

    站内搜索