Skip to content

Latest commit

 

History

History
72 lines (53 loc) · 16.8 KB

README.rst

File metadata and controls

72 lines (53 loc) · 16.8 KB

More Itertools

https://coveralls.io/repos/github/erikrose/more-itertools/badge.svg?branch=master

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 bucket, chunked, distribute, divide, grouper, partition, sliced, split_after, split_at, split_before
Lookahead and lookback peekable, seekable, spy
Windowing pairwise, stagger, windowed
Augmenting adjacent, count_cycle, groupby_transform, intersperse, ncycles, padded, padnone
Combining collapse, collate, dotproduct, flatten, interleave, interleave_longest, prepend, roundrobin, sort_together, zip_offset
Summarizing all_equal, consecutive_groups, exactly_n, first, first_true, ilen, locate, map_reduce, nth, one, quantify, run_length, unique_to_each
Selecting islice_extended, lstrip, rstrip, strip, tail, take, unique_everseen, unique_justseen
Combinatorics circular_shifts, distinct_permutations, nth_combination, powerset, random_combination, random_combination_with_replacement, random_permutation, random_product
Wrapping always_iterable, consumer, iter_except, with_iter
Others SequenceView, accumulate, always_reversible, consume, difference, iterate, make_decorator, numeric_range, repeatfunc, side_effect, tabulate

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!