如何删除列表中的重复值?

How to remove duplicate values in list?

能否请您帮我找到任何内置函数或其他解决方案以仅保留列表中的唯一值。 set(list) 在这种情况下没有成功。我希望删除重复项和源值,例如

list = ['A', 'B', 'B', 'C', 'C', 'D', 'E']
result = ['A', 'D', 'E']

我会对以下列表使用列表理解:

mylist = ["A", "B", "B", "C", "C", "D", "E"]
result = [i for i in mylist if mylist.count(i)==1]
print(result)

输出:

['A', 'D', 'E']

作为旁注,不要使用 list 作为变量名,因为这已经是内置函数名。

试试这个:

for element in list:
    if list.count(element) > 1:
        list(filter((element).__ne__, x))

^^^ 是修改列表,如果你想要一个新的带有值的列表,使用@Daweo 的方法。

您只需要在完成设置后重新检查计数即可。 而不是遍历整个列表并进行过滤(不花时间)

   newlist=[]
   for a in set(l):
       if l.count(a) == 1:
           newlist.append(a)

请不要使用“列表”作为变量的名称。这里的列表是“l”。

我会用 itertools.groupby:

from itertools import groupby

data = ['A', 'B', 'B', 'C', 'C', 'D', 'E']
g = filter(lambda x: len(list(x[1])) == 1, groupby(sorted(data), lambda x: x))

result = [x[0] for x in g]

然后我得到:['A', 'D', 'E']

通过迭代一组项目来查找重复项以减少迭代次数。

然后使用集合减法。

base_list = ['A', 'B', 'B', 'C', 'C', 'D', 'E']
duplicates = [i for i in set(base_list) if base_list.count(i) > 1]
no_duplicates_list = list(set(base_list) - set(duplicates))

结果将是:

['D', 'E', 'A']

需要的话可以排序。

简单高效(在 Python 3.6+ 中将保留顺序):

from collections import Counter
mylist = ["A", "B", "B", "C", "C", "D", "E"]
result = [key for key, count in Counter(mylist).items() if count == 1]

给予

['A', 'D', 'E']