删除列表python中的重复

Wil*_*nes 0 python list

可能重复:
如何在保留顺序的同时从Python中的列表中删除重复项?
在Python中,从列表中删除重复项的最快算法是什么,以便所有元素在保留顺序的同时是唯一的?

我想知道是否有一个函数执行以下操作:

以列表作为参数:

list = [ 3 , 5 , 6 , 4 , 6 , 2 , 7 , 6 , 5 , 3 ]
Run Code Online (Sandbox Code Playgroud)

并删除列表中的所有重复以获取:

list = [ 3 , 5 , 6 , 4 , 2 , 7 ]
Run Code Online (Sandbox Code Playgroud)

我知道你可以将它转换成字典,并使用字典不能重复的事实,但我想知道是否有更好的方法.

谢谢

Geo*_*ins 7

有关实现此目的的三种方法,请参阅Python文档.从该站点复制以下内容.将示例'mylist'替换为您的变量名称('list').

第一个示例:如果您不介意重新排序列表,请对其进行排序,然后从列表末尾进行扫描,删除重复项:

if mylist:
    mylist.sort()
    last = mylist[-1]
    for i in range(len(mylist)-2, -1, -1):
        if last == mylist[i]:
            del mylist[i]
        else:
            last = mylist[i]
Run Code Online (Sandbox Code Playgroud)

第二个示例:如果列表的所有元素都可以用作字典键(即它们都是可以清除的),这通常会更快:

d = {}
for x in mylist:
    d[x] = 1
mylist = list(d.keys())
Run Code Online (Sandbox Code Playgroud)

第三个例子:在Python 2.5及更高版本中:

mylist = list(set(mylist))
Run Code Online (Sandbox Code Playgroud)


mhy*_*itz 5

即使您说您不一定要使用 a dict,但我认为 anOrderedDict在这里是一个干净的解决方案。

from collections import OrderedDict

l = [3 ,5 ,6 ,4 ,6 ,2 ,7 ,6 ,5 ,3]
OrderedDict.fromkeys(l).keys()
# [3, 5, 6, 4, 2, 7]
Run Code Online (Sandbox Code Playgroud)

请注意,这会保留原始顺序。