Skip to main content

More routines for operating on iterables, beyond itertools

Project description

https://readthedocs.org/projects/more-itertools/badge/?version=latest

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

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, interleave_randomly, zip_offset, zip_broadcast, flatten, roundrobin, prepend, value_chain, partial_product

Concurrency

concurrent_tee, serialize, synchronized

Summarizing

ilen, unique_to_each, sample, consecutive_groups, run_length, map_reduce, join_mappings, exactly_n, is_sorted, all_equal, all_unique, argmin, argmax, 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, extract, 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, matmul, polynomial_from_roots, polynomial_derivative, polynomial_eval, reshape, sum_of_squares, transpose

Integer math

factor, is_prime, multinomial, nth_prime, sieve, totient

Statistics

running_min, running_max, running_mean, running_median, running_statistics

Combinatorics

circular_shifts, derangements, gray_product, outer_product, partitions, set_partitions, powerset, powerset_of_sets

distinct_combinations, distinct_permutations

combination_index, combination_with_replacement_index, permutation_index, product_index

nth_combination, nth_combination_with_replacement, nth_permutation, nth_product

random_combination, random_combination_with_replacement, random_derangement, random_permutation, random_product

Wrapping

always_iterable, always_reversible, countable, consumer, iter_except, sized_iterator with_iter

Others

locate, rlocate, replace, numeric_range, side_effect, iterate, loops, difference, make_decorator, SequenceView, time_limited, map_if, iter_index, consume, tabulate, repeatfunc, 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.

Development

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-11.1.0.tar.gz (145.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

more_itertools-11.1.0-py3-none-any.whl (72.2 kB view details)

Uploaded Python 3

File details

Details for the file more_itertools-11.1.0.tar.gz.

File metadata

  • Download URL: more_itertools-11.1.0.tar.gz
  • Upload date:
  • Size: 145.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.3

File hashes

Hashes for more_itertools-11.1.0.tar.gz
Algorithm Hash digest
SHA256 48e8f4d9e7e5878571ecf6f2b4e57634f93cd474cc8cfbd2376f2d11b396e30d
MD5 93ea38a66c1727add887f84eb2ea88ea
BLAKE2b-256 de1df4da6f02cdffe04d6362210b807146a26044c88d839208aec273bb0d9184

See more details on using hashes here.

File details

Details for the file more_itertools-11.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for more_itertools-11.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4b65538ae22f6fed0ce4874efd317463a7489796a0939fa66824dd542125a192
MD5 c4fdf0bea7b352acabca9249830f6f77
BLAKE2b-256 e83d1087453384dbde46a8c7f9356eead2c58be8a7bf156bca40243377c85715

See more details on using hashes here.

Supported by

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