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
|