从列表中删除重复的元素

时间:2014-11-08 16:07:38

标签: python list python-2.7 duplicates duplicate-removal

我正在尝试从列表中删除重复的元素:

li = [11, 11, 2, 3, 4]

我正在尝试这些方式:

方式1:

li = [x for x in li if x!=11]

方式2:

for x in range(0,len(li)):
    if x==11:
        li.remove(x)

是否有任何内置功能来完成这项工作?

1 个答案:

答案 0 :(得分:3)

修改

对不起,我最初误解了你的问题。

你真正想要的是collections.Counter和列表理解:

>>> from collections import Counter
>>> li= [11, 11, 2, 3, 4]
>>> [k for k, v in Counter(li).iteritems() if v == 1]
[3, 2, 4]
>>>

这只会保留列表中只出现一次的项目。


如果订单无关紧要,那么您只需使用set

即可
>>> li = [11, 11, 2, 3, 4]
>>> list(set(li))
[3, 2, 11, 4]
>>>

否则,您可以使用.fromkeyscollections.OrderedDict方法:

>>> from collections import OrderedDict
>>> li= [11, 11, 2, 3, 4]
>>> list(OrderedDict.fromkeys(li))
[11, 2, 3, 4]
>>>