17 lines
		
	
	
		
			465 B
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			17 lines
		
	
	
		
			465 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								"""util functions for collections_extended."""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def hash_iterable(it):
							 | 
						||
| 
								 | 
							
									"""Perform a O(1) memory hash of an iterable of arbitrary length.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									hash(tuple(it)) creates a temporary tuple containing all values from it
							 | 
						||
| 
								 | 
							
									which could be a problem if it is large.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									See discussion at:
							 | 
						||
| 
								 | 
							
									https://groups.google.com/forum/#!msg/python-ideas/XcuC01a8SYs/e-doB9TbDwAJ
							 | 
						||
| 
								 | 
							
									"""
							 | 
						||
| 
								 | 
							
									hash_value = hash(type(it))
							 | 
						||
| 
								 | 
							
									for value in it:
							 | 
						||
| 
								 | 
							
										hash_value = hash((hash_value, value))
							 | 
						||
| 
								 | 
							
									return hash_value
							 |