use*_*579 4 python list duplicates duplicate-removal
我尝试搜索并找不到这种确切的情况,所以如果它已经存在就道歉.
我正在尝试从列表中删除重复项以及我正在搜索的原始项目.如果我有这个:
ls = [1, 2, 3, 3]
Run Code Online (Sandbox Code Playgroud)
我想最终得到这个:
ls = [1, 2]
Run Code Online (Sandbox Code Playgroud)
我知道使用set会删除像这样的重复项:
print set(ls) # set([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
但它仍然保留了3我想删除的元素.我想知道是否有办法删除重复项和原始匹配项.
iCo*_*dez 13
使用列表理解和list.count:
>>> ls = [1, 2, 3, 3]
>>> [x for x in ls if ls.count(x) == 1]
[1, 2]
>>>
Run Code Online (Sandbox Code Playgroud)
以下是对这两者的参考.
编辑:
@Anonymous在下面提出了一个很好的观点.上述解决方案适用于小型列表,但对于较大的列表可能会变慢.
对于大型列表,您可以这样做:
>>> from collections import Counter
>>> ls = [1, 2, 3, 3]
>>> c = Counter(ls)
>>> [x for x in ls if c[x] == 1]
[1, 2]
>>>
Run Code Online (Sandbox Code Playgroud)
这是一个参考collections.Counter.