def unique(items):
'''Remove duplicate items from a sequence, preserving order
>>> unique([1, 2, 3, 2, 1, 4, 2])
[1, 2, 3, 4]
>>> unique([2, 2, 2, 1, 1, 1])
[2, 1]
>>> unique([1, 2, 3, 4])
[1, 2, 3, 4]
>>> unique([])
[]
'''
seen = set()
def is_new(obj, seen=seen, add=seen.add):
if obj in seen:
return 0
add(obj)
return 1
return filter(is_new, items)
If it won't be simple, it simply won't be. [Hire me, source code] by Miki Tebeka, CEO, 353Solutions
Tuesday, March 18, 2008
unique
Subscribe to:
Post Comments (Atom)
2 comments:
Why no just use this ?
unique = lambda x: x.__class__(set(x))
Very clever!
However this does not preserve the order of the elements.
>>> unique = lambda x: x.__class__(set(x))
>>> unique([2,1,3,1,1])
[1, 2, 3]
>>>
Post a Comment