Python 从列表中删除副本

Python 从列表中删除副本,python,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.de

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

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

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

self.contents = list(set(self.contents))
这不会保留项目的顺序,但至少不会使用O(n3)算法


一个更好的解决方案是首先设置
self.contents
a
set
,这样用户就根本不能输入重复项,如果你有选择的话。

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

self.contents = list(set(self.contents))
这不会保留项目的顺序,但至少不会使用O(n3)算法


一个更好的解决方案是首先设置
self.contents
a
set
,这样用户就不能输入重复项,如果您可以这样做的话。

为什么不使用set作为开始?删除重复项并保留顺序:为什么不使用set作为开始?删除重复项并保留顺序: