推荐日常使用 dict.fromkeys() 保序去重:list(dict.fromkeys(my_list)),要求元素可哈希,python 3.7+ 保持插入顺序,简洁高效;若含不可哈希类型或需自定义逻辑,则用遍历+in判断;仅需去重不保序时用 set();旧版本 python 可选 ordereddict。

Python 列表去重有多种方法,选择哪种取决于你是否需要保持原始顺序、是否允许修改原列表、元素是否可哈希,以及对性能的要求。
使用 set() 去重(最简但不保序)
适用于元素全部可哈希(如数字、字符串、元组),且不关心顺序的场景。直接转成 set 再转回 list 即可,代码最短,效率高。
- list(set(my_list)) —— 会打乱原有顺序,重复元素只留一个,但无法预测留下哪一个
- 注意:若列表含不可哈希类型(如字典、列表),会报 TypeError
用 dict.fromkeys() 保序去重(推荐日常使用)
Python 3.7+ 中 dict 保持插入顺序,dict.fromkeys() 天然去重且保留首次出现位置,是兼顾简洁与功能的首选。
新版本程序更新主要体现在:完美整合BBS论坛程序,用户只须注册一个帐号,即可全站通用!采用目前流行的Flash滚动切换广告 变换形式多样,受人喜爱!在原有提供的5种在线支付基础上增加北京云网支付!对留言本重新进行编排,加入留言验证码,后台有留言审核开关对购物系统的前台进行了一处安全更新。在原有文字友情链接基础上,增加LOGO友情链接功能强大的6种在线支付方式可选,自由切换。对新闻列表进行了调整,
- list(dict.fromkeys(my_list)) —— 元素需可哈希,但顺序完全保留
- 比循环手动判断更高效,也比用 OrderedDict 更简洁(后者在旧版本中需导入)
遍历 + in 判断(通用但较慢)
适合含不可哈希元素(如嵌套列表、字典)的列表,或需自定义去重逻辑(如忽略大小写、按某字段比较)。
立即学习“Python免费学习笔记(深入)”;
- 新建空列表,逐个检查元素是否已存在,不存在则追加
- 时间复杂度 O(n²),小数据可用,大数据慎用
- 示例:[x for i, x in enumerate(lst) if x not in lst[:i]](同样保序,但效率更低)
用 collections.OrderedDict(兼容旧版本 Python)
在 Python 3.6 及更早版本中,若需保序去重又不能依赖 dict 行为,可显式使用 OrderedDict。
- from collections import OrderedDict
- list(OrderedDict.fromkeys(my_list))
- 原理和 dict.fromkeys() 类似,但明确保证顺序,兼容性更好









