我正在尝试从列表中删除重复的元素:
li = [11, 11, 2, 3, 4]
我正在尝试这些方法:
方式一:
li = [x for x in li if x!=11]
方式2:
for x in range(0,len(li)):
if x==11:
li.remove(x)
是否有任何内置函数可以完成这项工作?
最佳答案
编辑:
抱歉,我最初看错了你的问题。
你真正想要的是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]
>>>
否则,您可以使用 .fromkeys
方法collections.OrderedDict
:
>>> from collections import OrderedDict
>>> li= [11, 11, 2, 3, 4]
>>> list(OrderedDict.fromkeys(li))
[11, 2, 3, 4]
>>>
关于python - 从列表中删除重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26819135/