Iterators and copy¶
Often it is simply not necessary to make a copy of an iterator. However there are certain cases where a copy is wanted. In these cases there three major options:
Given these three possibilities the iterators in iteration_utilities
should never be copied using copy.copy()
. Generally
itertools.tee()
should be the best choice except when file
serialization is needed. Then pickle
should be used. The
copy.deepcopy()
function makes, like pickle
a deep
(recursive) copy but doesn’t support file serialization.
A simple example using itertools.tee()
:
>>> from iteration_utilities import roundrobin
>>> from itertools import tee
>>> # Create an iterator
>>> a = roundrobin([1, 2, 3], [4, 5], [6])
>>> # Create a new iterator
>>> # Overwrite "a" because the input for "tee" shouldn't be reused after
>>> # the call to "tee".
>>> a, b = tee(a, 2)
>>> next(a)
1
>>> next(b)
1