python删除一个列表里的重复元素的方法与代码示例
学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。
在处理数据时,列表中经常会出现重复元素。去除这些重复项不仅能节省内存,还能提高后续处理的准确性。Python提供了多种去重方式,有的简单快捷但打乱顺序,有的稍复杂但能保留原始排列。下面通过具体代码演示五种主流方法,你可以直接复制运行查看结果。

Python列表去重方法概览
1. 使用 set 集合去重
这是最简单且执行速度最快的方法之一。set 是 Python 内置的无序不重复集合,将列表转换为集合即可自动去除重复项,然后再转回列表。
original_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
unique_list = list(set(original_list))
print(unique_list)
运行上述代码,输出结果可能是 [1, 2, 3, 4, 5, 6, 9]。需要注意的是,由于集合是无序的,转换后的列表元素顺序可能与原列表不同。如果顺序不重要,这是首选方案。

1. 使用 set 集合去重
2. 使用 dict.fromkeys() 保持顺序
从 Python 3.7 开始,字典保证插入顺序。利用 dict.fromkeys() 可以将列表元素作为键创建字典,从而在去重的同时保留首次出现的顺序。
original_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
unique_list = list(dict.fromkeys(original_list))
print(unique_list)
输出结果为 [3, 1, 4, 5, 9, 2, 6]。这种方法既简洁又能维持原始数据的相对位置,适合大多数需要去重且保持顺序的场景。

dict.fromkeys去重代码示例
3. 使用循环和条件判断
如果你希望更直观地控制去重逻辑,可以使用传统的 for 循环配合一个新列表来存储不重复的元素。
original_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
unique_list = []
for item in original_list:
if item not in unique_list:
unique_list.append(item)
print(unique_list)
这段代码遍历原列表,只有当元素不在 unique_list 中时才添加。输出结果同样是 [3, 1, 4, 5, 9, 2, 6]。虽然代码行数较多,但逻辑清晰,易于理解,适合初学者掌握去重原理。
4. 使用列表推导式
列表推导式可以让代码更紧凑。结合枚举索引,可以在一行内完成去重并保持顺序。
original_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
unique_list = [item for index, item in enumerate(original_list) if item not in original_list[:index]]
print(unique_list)
这里通过切片 original_list[:index] 检查当前元素之前是否已出现过。输出结果为 [3, 1, 4, 5, 9, 2, 6]。这种方法写法优雅,但在处理大型列表时,由于每次切片操作的时间复杂度较高,性能可能不如前几种方法。

列表推导式去重逻辑示意
5. 使用 collections.OrderedDict
在 Python 3.7 之前,普通字典不保证顺序,此时可以使用 collections 模块中的 OrderedDict 来实现有序去重。
from collections import OrderedDict
original_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
unique_list = list(OrderedDict.fromkeys(original_list))
print(unique_list)
输出结果为 [3, 1, 4, 5, 9, 2, 6]。虽然现代 Python 版本中 dict.fromkeys() 已足够好用,但在兼容旧版本环境或明确表达“有序”意图时,OrderedDict 依然是一个可靠的选择。

五种去重方法对比总结
以上五种方法各有适用场景:追求速度且不在乎顺序选 set;既要速度又要顺序选 dict.fromkeys();注重逻辑清晰选循环;喜欢简洁语法选列表推导式;兼容旧环境选 OrderedDict。根据你的具体需求灵活选择即可。
火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。















