Advertisement
britodfbr

uniqYield.py

Nov 10th, 2015
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.69 KB | None | 0 0
  1. #http://stackoverflow.com/questions/12897374/get-unique-values-from-a-list-in-python
  2. from itertools import ifilterfalse
  3.  
  4. def unique_everseen(iterable, key=None):
  5.     "List unique elements, preserving order. Remember all elements ever seen."
  6.     # unique_everseen('AAAABBBCCDAABBB') --> A B C D
  7.     # unique_everseen('ABBCcAD', str.lower) --> A B C D
  8.     seen = set()
  9.     seen_add = seen.add
  10.     if key is None:
  11.         for element in ifilterfalse(seen.__contains__, iterable):
  12.             seen_add(element)
  13.             yield element
  14.     else:
  15.         for element in iterable:
  16.             k = key(element)
  17.             if k not in seen:
  18.                 seen_add(k)
  19.                 yield element
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement