例如:
>>> x = [1, 1, 2, 'a', 'a', 3]
>>> unique(x)
[1, 2, 'a', 3]假设列表元素是可引用的。
Clarification:结果应该保留列表中的第一个副本。例如,1,2,3,2,3,1变成1,2,3。
发布于 2008-09-18 13:23:05
这里有一些很好的有效的解决方案。但是,对于不关心绝对最有效的O(n)解决方案的人,我将使用简单的一行O(n^2*log(n))解决方案:
def unique(xs):
return sorted(set(xs), key=lambda x: xs.index(x))或者更有效的双线性O(n*log(n))解决方案:
def unique(xs):
positions = dict((e,pos) for pos,e in reversed(list(enumerate(xs))))
return sorted(set(xs), key=lambda x: positions[x])https://stackoverflow.com/questions/89178
复制相似问题