You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中删除列表重复元素,仅保留每个元素的单个实例?

如何移除列表中的重复元素,仅保留每个元素的一个实例?

嘿,这个需求在Python里有好几种实用的实现方式,不管你的列表里重复元素有多少,都能轻松搞定!我结合你的例子[1,1,1,1,2,2,2,2,3,3,3,3],给你拆解几种常用方法:

方法1:利用集合(Set)快速去重

集合的核心特性就是不允许重复元素,所以直接把列表转成集合再转回列表就能完成去重。不过要注意:

  • Python 3.7及以上版本中,集合转列表会保留元素的插入顺序;低于3.7的版本顺序可能会打乱。
  • 这个方法只适用于列表元素是可哈希类型(比如数字、字符串、元组),如果有嵌套列表这类不可哈希元素就用不了。

代码示例:

original_list = [1,1,1,1,2,2,2,2,3,3,3,3]
unique_list = list(set(original_list))
print(unique_list)  # 输出 [1,2,3](Python3.7+保持顺序)

方法2:遍历手动维护唯一列表(兼容所有场景)

如果需要严格保持原列表的元素顺序,或者列表里有不可哈希元素,就可以用这种“笨但可靠”的方法:遍历原列表,把没出现过的元素添加到新列表里。

代码示例:

original_list = [1,1,1,1,2,2,2,2,3,3,3,3]
unique_list = []
for item in original_list:
    if item not in unique_list:
        unique_list.append(item)
print(unique_list)  # 输出 [1,2,3]

小缺点:如果列表非常大,item not in unique_list的查找效率会偏低(列表查找是O(n)复杂度)。

方法3:用dict.fromkeys()实现高效有序去重(Python3.7+推荐)

从Python3.7开始,字典会保留插入顺序,而dict.fromkeys()方法会自动忽略重复的键。用这个特性去重,既保证顺序,又有字典O(1)的查找效率,是处理可哈希元素的最优解之一。

代码示例:

original_list = [1,1,1,1,2,2,2,2,3,3,3,3]
unique_list = list(dict.fromkeys(original_list))
print(unique_list)  # 输出 [1,2,3]

方法4:itertools.groupby()(适合已排序列表)

如果你的列表已经是排序好的(就像题目里的例子),用itertools.groupby()会很方便——它会把连续的重复元素分组,我们只需要取每组的键就行。

代码示例:

from itertools import groupby

original_list = [1,1,1,1,2,2,2,2,3,3,3,3]
unique_list = [key for key, group in groupby(original_list)]
print(unique_list)  # 输出 [1,2,3]

⚠️ 注意:如果列表未排序,这个方法会失效!比如列表是[1,2,1],用groupby会得到[1,2,1],因为它只会处理连续的重复项。

内容的提问来源于stack exchange,提问作者Vivek Sivaramakrishnan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:07:43