我正在尝试从列表中删除重复的元素:
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)
是否有任何内置功能来完成这项工作?
答案 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]
>>>
否则,您可以使用.fromkeys
的collections.OrderedDict
方法:
>>> from collections import OrderedDict
>>> li= [11, 11, 2, 3, 4]
>>> list(OrderedDict.fromkeys(li))
[11, 2, 3, 4]
>>>