从列表中删除副本

时间:2018-11-06 20:50:49

标签: python

对于上下文:用户可以将项目添加到列表中。我要删除所有相同的提交。有没有更有效的方法可以做到这一点:?

def removeCopies(self):
    i = 0
    while i != self.size:
        number = self.contents.count(self.contents[i])
        if number != 1:
            for j in range(1, number):
                self.delete(self.contents.index(self.contents[i], i + 1))
        i += 1

1 个答案:

答案 0 :(得分:3)

我想到的最有效的删除重复项的方法是

self.contents = list(set(self.contents))

这不会保留项目的顺序,但至少不会以O(n 3 )算法结束。

更好的解决方案是将self.contents设为set,因此,如果可以选择的话,用户根本不能输入重复项。