def unique(iterable, key=None):
"""
Return only unique elements in iterable. Potentially high mem. consumption!
>>> list(unique([2,3,1,1,2,4]))
[2, 3, 1, 4]
>>> ''.join(unique('this is a test'))
'this ae'
>>> data = [(1,'a'), (2,'a'), (3,'b')]
>>> list(unique(data, key=lambda t: t[1]))
[(1, 'a'), (3, 'b')]
:param iterable iterable: Any iterable, e.g. list, range, ...
:param key: Function used to compare for equality.
:return: Iterator over unique elements.
:rtype: Iterator
"""
seen = set()
for e in iterable:
k = key(e) if key else e
if k not in seen:
seen.add(k)
yield e
评论列表
文章目录