原文发于:http://qing.weibo.com/2059598087/7ac2f907330025yy.html
如何测试列表是否没有重复元素?(来自博客文章Python Tips, Tricks, and Hacks http://www.siafoo.net/article/52)
numbers = [1,2,3,3,4,1] set(numbers) # returns set([1,2,3,4]) if len(numbers) == len(set(numbers)): print('List is unique!') else: print("List is not unique!") # In this case, print 'List is not unique!'
numbers = [1,2,3,3,4,1] d = {} for i,key in enumerate(numbers): d.setdefault(key, i) result = [key for key in sorted(d, key=d.__getitem__)] #result is [1, 2, 3, 4]另一种方案:
result = [item for i,item in enumerate(numbers[::-1]) if item not in numbers[:-i-1]] result.reverse()注1:如果需要实现[1, 2, 1]-->[2, 1]
def uniquer(seq): def g(seq): s = set() for i in seq: if i not in s: s.add(i) yield i result = list(g(seq)) return result当数据较为庞大时,该函数较上述字典比较的方案要快得多。这主要是因为没有sort的时间限制,当然,会有多余的函数调用时间消耗。