mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 02:15:10 +00:00 
			
		
		
		
	 37e0c7850d
			
		
	
	
		37e0c7850d
		
			
		
	
	
	
	
		
			
			* bpo-43926: Cleaner metadata with PEP 566 JSON support. * Add blurb * Add versionchanged and versionadded declarations for changes to metadata. * Use descriptor for PEP 566
		
			
				
	
	
		
			19 lines
		
	
	
	
		
			607 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			19 lines
		
	
	
	
		
			607 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| from itertools import filterfalse
 | |
| 
 | |
| 
 | |
| def unique_everseen(iterable, key=None):
 | |
|     "List unique elements, preserving order. Remember all elements ever seen."
 | |
|     # unique_everseen('AAAABBBCCDAABBB') --> A B C D
 | |
|     # unique_everseen('ABBCcAD', str.lower) --> A B C D
 | |
|     seen = set()
 | |
|     seen_add = seen.add
 | |
|     if key is None:
 | |
|         for element in filterfalse(seen.__contains__, iterable):
 | |
|             seen_add(element)
 | |
|             yield element
 | |
|     else:
 | |
|         for element in iterable:
 | |
|             k = key(element)
 | |
|             if k not in seen:
 | |
|                 seen_add(k)
 | |
|                 yield element
 |