Source code for coalib.misc.IterUtilities
from itertools import tee
[docs]def partition(iterable, predicate):
"""
Partitions the iterable into two iterables based on the given predicate.
:param predicate: A function that takes an item of the iterable and
returns a boolean
:return: Two iterators pointing to the original iterable
"""
a, b = tee((predicate(item), item) for item in iterable)
return ((item for pred, item in a if pred),
(item for pred, item in b if not pred))