集合去重更快因其哈希实现,时间复杂度O(1);列表推导式查重为O(n²)较慢;需保序时推荐dict.fromkeys(),兼具性能与顺序。

在 Python 中,用集合(set)和列表推导式去重,集合去重更快。原因在于数据结构和时间复杂度的差异。
集合去重:高效且简洁
集合是哈希实现的,插入和查找平均时间复杂度为 O(1)。将列表转为集合会自动去除重复元素:
my_list = [1, 2, 2, 3, 4, 4, 5]unique_list = list(set(my_list))
这种方法只遍历一次原列表,整体时间复杂度接近 O(n),效率高。
列表推导式去重:逻辑清晰但慢
如果用列表推导式配合条件判断去重,比如维护一个已见元素的列表:
seen = []unique_list = [x for x in my_list if x not in seen and not seen.append(x)]
虽然能保持原始顺序,但 x not in seen 是对列表的线性查找,每次操作耗时 O(k),整体变成 O(n²),数据量大时明显变慢。
兼顾速度与顺序的推荐方法
如果需要保持顺序又追求性能,推荐使用 dict.fromkeys():
字典从 Python 3.7 起保证插入顺序,且键的查找为 O(1),速度接近集合,还能保留元素首次出现的顺序。
基本上就这些:单纯去重选 set,要保序用 dict.fromkeys(),避免用列表推导式做重复检查。不复杂但容易忽略效率差别。











