Python中列表中出现多次的元素

0 投票
6 回答
15747 浏览
提问于 2025-04-16 12:09

请帮帮我(我知道这个问题有点傻):

我有一个列表 d = [' ABA', ' AAB', ' BAA', ' BAA', ' AAB', ' ABA']。我该怎么做才能排除那些出现超过一次的元素呢?

6 个回答

0

如果顺序很重要,可以看看 unique_everseen 这个函数,它在 itertools 的文档里有介绍。这个函数提供了一种比较简单的基于迭代器的解决方案。

如果顺序不重要,那就把数据转换成一个集合(set)。

15

排除列表中出现超过一次的项目:

d = [x for x in d if d.count(x) == 1]

对于上面提供的例子,d会变成一个空列表。

其他人也分享了一些很好的方法来去除重复项

6

先把数据转换成一个集合,然后再转换回来:

list(set(d))

如果顺序很重要,你可以通过一个字典来传递这些值,这样字典会记住原来的位置。虽然这种方法可以用一个表达式来表示,但其实要复杂得多:

[x for (i, x) in sorted((i, x) for (x, i) in dict((x, i) for (i, x) in reversed(list(enumerate(d)))).iteritems())]

当然,你不一定要使用推导式。对于这个问题,有一个相对简单的解决方案:

a = []
for x in d:
    if x not in a:
        a.append(x)

需要注意的是,这些保持顺序的解决方案都是假设你想保留每个重复元素的第一次出现。

撰写回答