Split an iterable into multiple using arbitrary predicates.
Project description
Split an iterable into multiple using arbitrary predicates.
This package comes with a single function: multisplitby.multi_split_by.
For all lists values and predicates, the following conditions are always true:
1 + len(predicates) = len(list(multi_split_by(values, predicates)))
values == itertools.chain.from_iterable(multi_split_by(values, predicates))
Normal usage with one predicate:
>>> values = range(4)
>>> predicates = [lambda x: 2 < x]
>>> list(map(list, multi_split_by(values, predicates)))
[[0, 1, 2], [3]]
Normal usage with several predicates:
>>> values = range(9)
>>> predicates = [lambda x: 2 < x, lambda x: 4 < x, lambda x: 7 < x]
>>> list(map(list, multi_split_by(values, predicates)))
[[0, 1, 2], [3, 4], [5, 6, 7], [8]]
If no values are given, will result in |predicates| + 1 generators, all yielding empty lists.
>>> values = []
>>> predicates = [lambda x: 2 < x, lambda x: 4 < x, lambda x: 7 < x]
>>> list(map(list, multi_split_by(values, predicates)))
[[], [], [], []]
If no predicates are given, will result in a single generator that yields the original list:
>>> values = range(4)
>>> predicates = []
>>> list(map(list, multi_split_by(values, predicates)))
[[0, 1, 2, 3]]
Installation
Install from PyPI with:
$ pip install multisplitby
or get the latest code from GitHub with:
$ git clone https://github.com/cthoyt/multisplitby.git
$ cd multisplitby
$ pip install -e .
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for multisplitby-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab9237c1366e0cd9eecc87cfa5c0330b4843dfcafe71408ea2d8864659f69897 |
|
MD5 | 90bf5744c34633da12f8a9c9b314e6e3 |
|
BLAKE2b-256 | b18fa054cb80019076a42b2a2876b76aea0c48c44c2fefd86bc59782967fcc13 |