【发布时间】:2014-10-06 21:40:16
【问题描述】:
我有一个函数unique(a),它接受一个数字列表a,并且只返回每个值中的一个。同时,它维护列表的顺序。我还有一个函数big_list(n),它生成len(n) 的列表。
我反转列表方向的原因是,在删除值时,它会将它们从原始列表的后面删除,只是为了使修改后的列表在与原始列表进行比较时更加干净和可读。
当我创建的列表长度相对较小时,该函数可以工作,但是当我获得更大的长度时,例如 1,000,000 为 ex,执行时间需要 FOREVER。
如果有人可以帮助我加快我的功能,那就太好了!
仅供参考:我需要在函数的某处使用一个集合来完成我正在处理的任务。我仍然需要从后面删除列表项。
提前致谢!
def big_list(n) :
# Create a list of n 'random' values in the range [-n/2,n/2]
return [ randrange(-n//2, n//2) for i in range(n) ]
def unique(a) :
a = a[::-1]
b = set(a)
for i in b :
while a.count(i) != 1 :
a.remove(i)
a.count(i)
a = a[::-1]
return a
【问题讨论】:
-
Set 已经是唯一的了。它不会包含重复项。即 x=set(big_list(10k)), x 将没有重复项。
-
这难道不是时间复杂度最差的例子吗?
标签: python performance loops