python中的集合(set)给列表去重

发布时间:2026/9/26 7:10:56

python中的集合(set)给列表去重 使用集合set给列表去重的核心原理是利用集合的“元素唯一性”特性自动过滤重复项。但需注意直接转集合会丢失原始顺序若需保留顺序应结合字典dict.fromkeys()或辅助集合实现。以下是具体方法一、基础去重方法1. 直接转集合不保序最快原理集合天然不允许重复元素将列表转为集合会自动去重。代码示例nums unique list(set(nums)) print(unique) # 输出顺序随机**不保证原顺序**适用场景无需保留原始顺序时如统计唯一值、去重后直接排序等。性能时间复杂度O(n)是所有方法中最快的。2. 保序去重推荐方法(1) 使用dict.fromkeys()Python 3.7原理Python 3.7 的字典默认保持插入顺序用列表元素作键可同时去重并保序。代码示例nums unique list(dict.fromkeys(nums)) print(unique) # 输出**保留首次出现顺序**优势代码简洁、性能高O(n)是官方推荐的保序去重方案。(2) 辅助集合 循环通用兼容原理遍历原列表用集合记录已出现元素仅添加新元素到结果列表。代码示例nums seen set() unique [x for x in nums if x not in seen and not seen.add(x)] print(unique) # 输出适用场景需兼容旧版 Python3.7或需自定义去重逻辑时。二、关键注意事项1.元素必须可哈希集合要求元素是可哈希的不可变对象如数字、字符串、元组。不可直接处理列表/字典等可变对象需先转为可哈希类型# 错误示例列表不可哈希 # data [, , ] # list(set(data)) # 报错TypeError: unhashable type: list # 正确做法转为元组 data [, , ] unique [list(t) for t in set(tuple(x) for x in data)] print(unique) # 输出[, ]自定义对象需实现__hash__和__eq__方法。2. 顺序问题set()去重不保留顺序不同 Python 版本/运行环境结果顺序可能不同。保序方法的选择优先用dict.fromkeys()Python 3.7。旧版本可用collections.OrderedDictfrom collections import OrderedDict unique list(OrderedDict.fromkeys(nums))3. 性能对比方法是否保序时间复杂度适用场景list(set(lst))❌O(n)无需顺序速度最快list(dict.fromkeys(lst))✅O(n)需保序的常规场景循环 辅助集合✅O(n)需自定义逻辑或兼容旧版本列表推导式if x not in✅O(n²)小数据量避免用于大数据集大数据量时O(n²) 方法如列表推导式性能显著劣于 O(n) 方法。三、复杂场景处理1. 按对象属性去重场景列表元素为字典/对象需根据特定字段去重。解决方案用字段值作为唯一标识结合辅助集合data [{id: 1, name: A}, {id: 1, name: B}, {id: 2, name: C}] seen set() unique [x for x in data if x[id] not in seen and not seen.add(x[id])] print(unique) # 输出[{id: 1, name: A}, {id: 2, name: C}]2. 大数据量去重内存优化流式处理避免一次性加载全部数据。def stream_deduplicate(iterable): seen set() for item in iterable: if item not in seen: seen.add(item) yield item # 用法unique list(stream_deduplicate(large_data_stream))总结无需保序直接用list(set(original_list))速度最快。需要保序优先用list(dict.fromkeys(original_list))Python 3.7简洁高效。元素不可哈希先转换为可哈希类型如元组再用集合去重。性能关键点避免在循环中使用if x not in listO(n²)必须用集合辅助判断O(1)。以上方法均不修改原列表而是返回新列表。若需原地去重需结合切片赋值original_list[:] list(dict.fromkeys(original_list))。
延伸阅读

更多相关文章

2026/9/25 23:18:51

RimSort终极指南:5分钟掌握环世界MOD管理的完整教程

RimSort终极指南:5分钟掌握环世界MOD管理的完整教程 【免费下载链接】RimSort RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, community-manage…

2026/9/23 6:44:29

从零构建自主循环AI Agent系统:核心组件、实战代码与工程化部署

1. 先搞清楚“会自己找活”的Agent Loop到底解决了什么 别再手动一条条给AI下指令了。如果你还在为每个任务单独写Prompt、等结果、再根据结果写下一个Prompt,那说明你的工作流还停留在“手动挡”阶段。一个能“自己找活”的Agent Loop系统,核心解决的就…

2026/9/25 19:39:01

AI应用生产环境安全防护实战:从网络隔离到输出审查的完整指南

这次我们来看一个在生产环境中保护 AI 智能体、MCP 服务器与 LLM 应用的安全实践。这不仅仅是理论探讨,而是直接关系到你的模型服务能否稳定、安全地对外提供能力。无论是自研的智能体、基于 Model Context Protocol (MCP) 构建的服务器,还是各类大语言模…

2026/9/26 7:09:49

英语-语法-并列句

三、并列句这个要有基本的印象不定式在动态名词后面作后置定语这个地方的关键点在于省略并列连词,and结构,怎么省略

2026/9/26 7:09:48

年号字串与Excel列号转换:深入理解无零的伪26进制算法

这题名字听着挺唬人,P605 年号字串,说白了就是把一个正整数变成一串字母:1 对应 A,2 对应 B,26 对应 Z,27 对应 AA,2019 对应 BYQ。我第一次做这道题的时候,第一反应就是“这不就是个…

2026/9/26 7:09:48

LocateAnything:面向工业落地的多模态视觉定位引擎

1. 这不是又一个“AI定位工具”——LocateAnything到底在解决什么真问题?LocateAnything这个词,光看名字容易误以为是某种GPS增强插件或者手机定位辅助软件。但实际接触过它的开发者,第一反应往往是:“原来还能这么用?…

2026/9/26 7:09:48

AI替代的是任务而非岗位:从任务审计到不可替代的实操路径

1. 先搞清楚“替代”到底替代的是什么“AI替代浪潮下,你的工作安全吗?”这个问题之所以让人焦虑,是因为大多数人把“替代”理解成了一个非黑即白的开关——要么被替代,要么安全。但我在过去两年跟踪了十几个行业的自动化落地过程&…

2026/9/26 7:04:48

网络编程技术实践技能训练1:TCP Socket 编程从零跑通与避坑指南

简介:这份资料面向国家开放大学(广开/国开)电大网络编程技术课程的学习者,对应实践技能训练1的参考答案,帮助解决制作简易购物车页面时无从下手、代码调试困难等问题。压缩包共5个文件,包含html页面结构、c…

2026/9/25 21:00:17

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/25 20:59:52

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/26 0:04:28

画质修复APP怎么选?Wink影像修复能力与产品实力解析

现如今手机拍摄场景愈发丰富,演唱会直拍、漫展记录、老视频翻新、日常vlog录制,都会遇到画面模糊、噪点多、曝光失衡等问题,不少用户在挑选工具时比较在意一款画质修复APP能够兼顾修复效果与自然质感。Wink作为美图公司推出的全球化AI影像增强…

2026/9/26 0:04:28

超低能耗建筑K值要求能否满足?浙东铝业建筑型材解析

核心摘要浙东铝业的超低能耗系统门窗产品,资料显示保温性能可达 K≤1.4W/(㎡K),能够对应上海地区超低能耗住宅对门窗保温性能的应用需求。判断建筑是否满足超低能耗要求,不能只看铝型材本身,还需要结合玻璃、隔热条、密封系统、开…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/25 18:41:36

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑