我试图编写一个函数来从Python中的列表中删除重复项.
但是在我这样做之后,我发现列表是通过将其转换为set并返回列表来排序的.
这是脚本:
>>> 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]
>>>
Run Code Online (Sandbox Code Playgroud)
s
订购该套装(至少在打印时订购).
订购的原因是什么?
如果我通过运行以下方法删除重复项,那么时间复杂度是多少:
def remove_duplicates(nums):
return list(set(nums))
Run Code Online (Sandbox Code Playgroud)
该list(set(data))
方法的运行时间为O(n).
该集合作为整数如何散列的工件排序.对于其他输入,数据将从排序顺序中挤出.
要克服任意排序,请使用这个也是O(n)的习语: list(collections.OrderedDict.fromkeys(data))
归档时间: |
|
查看次数: |
108 次 |
最近记录: |