从列表中删除重复项但返回相同的列表

时间:2017-03-10 02:48:58

标签: python list duplicates

我需要从列表中删除重复项,但返回相同的列表。 所以选项如:

return list(set(list))

对我不起作用,因为它会创建一个新列表。

def remove_extras(lst):
  for i in lst:
    if lst.count(i)>1:
        lst.remove(i)
  return lst

这是我的代码,它适用于某些情况,但我不明白为什么它不适用于remove_extras([1,1,1,1]),因为当计数为1时它返回[1,1]应该是> 1。

2 个答案:

答案 0 :(得分:2)

创建新列表后,可以使用切片分配替换列表中的内容。如果结果顺序无关紧要,您可以使用set

def remove_duplicates(l):
    l[:] = set(l)

l = [1, 2, 1, 3, 2, 1]
remove_duplicates(l)
print(l)

输出:

[1, 2, 3]

答案 1 :(得分:0)

您可以使用Address server started harris@ics.uci.edu joe@cnn.com 来实现此目的,在保持列表顺序的同时删除重复项。

OrderedDict

这有一个运行时: O(N)