在Python的列表中出现更多的元素

Bob*_*Bob 0 python element list

请帮忙(我知道这是一个愚蠢的问题):

我有一份清单d = [' ABA', ' AAB', ' BAA', ' BAA', ' AAB', ' ABA'].如何排除出现多次的元素?

Ade*_*mro 12

要从列表中排除多次出现的项目:

d = [x for x in d if d.count(x) == 1]
Run Code Online (Sandbox Code Playgroud)

对于上面提供的示例,d将绑定到空列表.

其他人已发布好的解决方案来删除重复项.


Mar*_*tos 6

转换为集合然后再返回:

list(set(d))
Run Code Online (Sandbox Code Playgroud)

如果订单很重要,您可以通过记住原始索引的dict传递值.这种方法虽然可以表达为单个表达式,但却要复杂得多:

[x for (i, x) in sorted((i, x) for (x, i) in dict((x, i) for (i, x) in reversed(list(enumerate(d)))).iteritems())]
Run Code Online (Sandbox Code Playgroud)

当然,您不必使用理解.对于这个问题,有一个相当简单的解决方案:

a = []
for x in d:
    if x not in a:
        a.append(x)
Run Code Online (Sandbox Code Playgroud)

请注意,两个保留顺序的解决方案都假定您希望保留每个重复元素的第一个匹配项.