logo

oasis-root

Compiled tree of Oasis Linux based on own branch at <https://hacktivis.me/git/oasis/> git clone https://anongit.hacktivis.me/git/oasis-root.git

_itertools.py (607B)


  1. from itertools import filterfalse
  2. def unique_everseen(iterable, key=None):
  3. "List unique elements, preserving order. Remember all elements ever seen."
  4. # unique_everseen('AAAABBBCCDAABBB') --> A B C D
  5. # unique_everseen('ABBCcAD', str.lower) --> A B C D
  6. seen = set()
  7. seen_add = seen.add
  8. if key is None:
  9. for element in filterfalse(seen.__contains__, iterable):
  10. seen_add(element)
  11. yield element
  12. else:
  13. for element in iterable:
  14. k = key(element)
  15. if k not in seen:
  16. seen_add(k)
  17. yield element