Python's itertools
library is a gem - you can compose elegant solutions
for a variety of problems with the functions it provides. In more-itertools
we collect additional building blocks, recipes, and routines for working with
Python iterables.
Grouping |
chunked,
ichunked,
chunked_even,
sliced,
constrained_batches,
distribute,
divide,
split_at,
split_before,
split_after,
split_into,
split_when,
bucket,
unzip,
batched,
grouper,
partition,
transpose |
Lookahead and lookback |
spy,
peekable,
seekable |
Windowing |
windowed,
substrings,
substrings_indexes,
stagger,
windowed_complete,
pairwise,
triplewise,
sliding_window,
subslices |
Augmenting |
count_cycle,
intersperse,
padded,
repeat_each,
mark_ends,
repeat_last,
adjacent,
groupby_transform,
pad_none,
ncycles |
Combining |
collapse,
sort_together,
interleave,
interleave_longest,
interleave_evenly,
zip_offset,
zip_equal,
zip_broadcast,
flatten,
roundrobin,
prepend,
value_chain,
partial_product |
Summarizing |
ilen,
unique_to_each,
sample,
consecutive_groups,
run_length,
map_reduce,
join_mappings,
exactly_n,
is_sorted,
all_equal,
all_unique,
minmax,
first_true,
quantify,
iequals |
Selecting |
islice_extended,
first,
last,
one,
only,
strictly_n,
strip,
lstrip,
rstrip,
filter_except,
map_except,
filter_map,
iter_suppress,
nth_or_last,
unique_in_window,
before_and_after,
nth,
take,
tail,
unique_everseen,
unique_justseen,
unique,
duplicates_everseen,
duplicates_justseen,
classify_unique,
longest_common_prefix,
takewhile_inclusive |
Math |
dft,
idft,
convolve,
dotproduct,
factor,
matmul,
polynomial_from_roots,
polynomial_derivative,
polynomial_eval,
sieve,
sum_of_squares,
totient |
Combinatorics |
distinct_permutations,
distinct_combinations,
circular_shifts,
partitions,
set_partitions,
product_index,
combination_index,
permutation_index,
combination_with_replacement_index,
gray_product,
outer_product,
powerset,
powerset_of_sets,
random_product,
random_permutation,
random_combination,
random_combination_with_replacement,
nth_product,
nth_permutation,
nth_combination,
nth_combination_with_replacement |
Wrapping |
always_iterable,
always_reversible,
countable,
consumer,
with_iter,
iter_except |
Others |
locate,
rlocate,
replace,
numeric_range,
side_effect,
iterate,
difference,
make_decorator,
SequenceView,
time_limited,
map_if,
iter_index,
consume,
tabulate,
repeatfunc,
reshape
doublestarmap |
To get started, install the library with pip:
pip install more-itertools
The recipes from the itertools docs
are included in the top-level package:
>>> from more_itertools import flatten
>>> iterable = [(0, 1), (2, 3)]
>>> list(flatten(iterable))
[0, 1, 2, 3]
Several new recipes are available as well:
>>> from more_itertools import chunked
>>> iterable = [0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> list(chunked(iterable, 3))
[[0, 1, 2], [3, 4, 5], [6, 7, 8]]
>>> from more_itertools import spy
>>> iterable = (x * x for x in range(1, 6))
>>> head, iterable = spy(iterable, n=3)
>>> list(head)
[1, 4, 9]
>>> list(iterable)
[1, 4, 9, 16, 25]
For the full listing of functions, see the API documentation.
Blog posts about more-itertools
:
more-itertools
is maintained by @erikrose
and @bbayles, with help from many others.
If you have a problem or suggestion, please file a bug or pull request in this
repository. Thanks for contributing!
The version history can be found in documentation.