如何删除列表中重复数字的所有实例?

Vik*_*ava 9 python

我想要一个删除列表中重复的任何数字的所有实例的代码。

例如:

Inputlist = [2, 3, 6, 6, 8, 9, 12, 12, 14]
 
Outputlist = [2,3,8,9,14]
Run Code Online (Sandbox Code Playgroud)

我已经尝试删除列表中的重复元素(通过使用“唯一”功能),但它仍然在列表中留下元素的单个实例!

seen = set()
uniq = []
for x in Outputlist:
    if x not in seen:
        uniq.append(x)
        seen.add(x)      
seen
Run Code Online (Sandbox Code Playgroud)

我也阅读了很多 StackOverflow 文章,但所有文章的不同之处在于他们正在搜索从两个不同列表中删除公共元素,或者他们希望每个元素只保留一个实例。我想简单地删除所有常见元素。

abc*_*abc 10

您可以使用计数器

>>> from collections import Counter
>>> l = [2, 3, 6, 6, 8, 9, 12, 12, 14]
>>> res = [el for el, cnt in Counter(l).items() if cnt==1]
>>> res
[2, 3, 8, 9, 14]
Run Code Online (Sandbox Code Playgroud)

  • 从输出列表中,他希望元素只出现一次,这不仅仅是删除重复项@mlisthenewcool (5认同)
  • @Pac0 我怀疑是否有更有效的解决方案。计数器的复杂度是 O(n)。无论如何你都需要迭代整个列表..所以它不会比 O(n) 更好。 (5认同)
  • 这里的计数器是多余的,“set”就可以了。 (4认同)