Skip to main content

More routines for operating on iterables, beyond itertools

Project description

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.


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


windowed, substrings, substrings_indexes, stagger, windowed_complete, pairwise, triplewise, sliding_window, subslices


count_cycle, intersperse, padded, repeat_each, mark_ends, repeat_last, adjacent, groupby_transform, pad_none, ncycles


collapse, sort_together, interleave, interleave_longest, interleave_evenly, zip_offset, zip_equal, zip_broadcast, flatten, roundrobin, prepend, value_chain, partial_product


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


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


dft, idft, convolve, dotproduct, factor, matmul, polynomial_from_roots, polynomial_derivative, polynomial_eval, sieve, sum_of_squares, totient


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


always_iterable, always_reversible, countable, consumer, with_iter, iter_except


locate, rlocate, replace, numeric_range, side_effect, iterate, difference, make_decorator, SequenceView, time_limited, map_if, iter_index, consume, tabulate, repeatfunc, reshape doublestarmap

Getting started

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.


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!

Version History

The version history can be found in documentation.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

more-itertools-10.3.0.tar.gz (118.1 kB view hashes)

Uploaded Source

Built Distribution

more_itertools-10.3.0-py3-none-any.whl (59.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page