This is really nice, but I think you have a negation wrong in there somewhere:
In [1]: from collections import deque ...: ...: def partition(pred, iterable): ...: results = deque([]), deque([]) ...: ...: def gen_split(only): ...: for thing in iterable: ...: if results[only]: ...: yield results[only].popleft() ...: results[not pred(thing)].append(thing) ...: for thing in results[only]: ...: yield thing ...: ...: return gen_split(True), gen_split(False) ...: In [2]: def isEven(n): ...: return n/2 == n//2 ...: In [3]: from itertools import count In [4]: evens, odds = partition(isEven, count()) In [5]: next(evens) Out[5]: 1 In [6]: next(evens) Out[6]: 3 In [7]: next(evens) Out[7]: 5 In [8]: next(odds) Out[8]: 0 In [9]: next(odds) Out[9]: 2 In [10]: next(odds) Out[10]: 4 On Mon, Jun 6, 2022 at 10:32 AM Mathew Elman <[email protected]> wrote: > from collections import deque > > def partition(pred, iterable): > results = deque([]), deque([]) > > def gen_split(only): > for thing in iterable: > if results[only]: > yield results[only].popleft() > results[not pred(thing)].append(thing) > for thing in results[only]: > yield thing > > return gen_split(True), gen_split(False) > _______________________________________________ > Python-ideas mailing list -- [email protected] > To unsubscribe send an email to [email protected] > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/[email protected]/message/EUAYPXMZM4DOGTAAUURNOMWTDU65K6UY/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- Keeping medicines from the bloodstreams of the sick; food from the bellies of the hungry; books from the hands of the uneducated; technology from the underdeveloped; and putting advocates of freedom in prisons. Intellectual property is to the 21st century what the slave trade was to the 16th.
_______________________________________________ Python-ideas mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/HWKJMLZSQVZQERYAKYZUAMK2YGIFUPIX/ Code of Conduct: http://python.org/psf/codeofconduct/
