我要做的是编写一个方法,该方法将列表作为参数并使用集合返回列表的副本,其中每个元素只出现一次,以及让新列表中的元素按它们的顺序出现第一次出现在原始列表中。我必须为此使用一个集合,但是,我无法做到这样才能使输出的顺序正确,同时获得快速的结果。如果我放这样的东西:
def unique(a):
return list(set(a))
并传递了一个包含数百万个元素的列表,它会很快给我一个结果,但它不会被排序。所以我现在拥有的是:
def unique(a):
b = set(a)
c = {}
d = []
for i in b:
c[a.index(i)] = i
for i in c:
d.append(c[i])
return d
这给了我想要的结果,但速度不够快。如果我传递一个包含一百万个元素的列表,我可能要等半个小时,而上面的一个班轮只需要不到一秒钟。我该如何解决这个问题?