Python 从列表中删除重复的元素
我正在尝试从列表中删除重复的元素:Python 从列表中删除重复的元素,python,list,python-2.7,duplicates,duplicate-removal,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) 是否有任何内置函数来执行此任务?编辑: 对不起,我最初误解了你的问题 你真正想要的是一份清单: >>> from collections import Counter
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)
是否有任何内置函数来执行此任务?编辑:
对不起,我最初误解了你的问题
你真正想要的是一份清单:
>>> from collections import Counter
>>> li= [11, 11, 2, 3, 4]
>>> [k for k, v in Counter(li).iteritems() if v == 1]
[3, 2, 4]
>>>
这将只保留在列表中仅出现一次的项目
如果顺序无关紧要,那么您可以简单地使用: 否则,您可以使用以下方法:
您说“从列表中删除重复的元素”,但您的第一个代码会删除所有数字11s,而您的第二个代码不会更改您的列表(因为
x
正在从0循环到len(l1)-1
,在您的情况下,这永远不会是11)。你希望得到什么样的输出?试试这个问题:我的问题是关于删除所有重复的元素“11”,也就是说,操作后将没有元素“11”。哇,太好了。非常感谢。我几乎忘记了set()。对于collections.OrderedDict()方法,+1。但我的问题是删除所有重复的元素。也就是说,全部是“11”。我不确定这两个选项是否能满足OP的需求,但很难确定,因为OP的两个代码似乎都没有达到他所说的需求。+1用于使用OrderedDict来确定OP wan是否没有订购(散列)列表。
>>> li = [11, 11, 2, 3, 4]
>>> list(set(li))
[3, 2, 11, 4]
>>>
>>> from collections import OrderedDict
>>> li= [11, 11, 2, 3, 4]
>>> list(OrderedDict.fromkeys(li))
[11, 2, 3, 4]
>>>