code: def hash_iterable(it):
  	
  	hash_value = hash(type(it))
  	for value in it:
  		hash_value = hash((hash_value, value))
  	return hash_value
docs: 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