我试图编写一个函数来从Python中的列表中删除重复项。
但是在我这样做之后,我发现列表是通过将其转换为集合并返回列表来排序的。
这是脚本:
>>> l = [9,10,10,11,1,1,1,22,2,2,2]
>>> s = set(l)
>>> s
set([1, 2, 9, 10, 11, 22])
>>> l2 = list(s)
>>> l2
[1, 2, 9, 10, 11, 22]
>>> l2 = list(set(l))
>>> l2
[1, 2, 9, 10, 11, 22]
>>>
订购了s
集合(至少在打印时订购)。
为什么要订购这套?
如果我通过运行这个来删除重复项,那么时间复杂度是多少:
def remove_duplicates(nums):
return list(set(nums))
答案 0 :(得分:5)
list(set(data))
方法的运行时间为O(n)。
该集合显示为有关如何对整数进行哈希处理的工件。对于其他输入,数据将从排序顺序中匆匆而过。
要克服任意顺序,请使用这个也是O(n)的成语:list(collections.OrderedDict.fromkeys(data))