GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - more-itertools/more-itertools: More routines for operating on iterables, beyond itertools

BranchesTags
Open more actions menu

Latest commit

 

History

2,540 Commits
2,540 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
docs
docs
 
 
more_itertools
more_itertools
 
 
requirements
requirements
 
 
tests
tests
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.readthedocs.yaml
.readthedocs.yaml
 
 
LICENSE
LICENSE
 
 
MANIFEST.in
MANIFEST.in
 
 
Makefile
Makefile
 
 
README.rst
README.rst
 
 
pyproject.toml
pyproject.toml
 
 
setup.cfg
setup.cfg
 
 
tox.ini
tox.ini
 
 

Repository files navigation

More Itertools

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, subfactorial, 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
random_ordered_range
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.

Links elsewhere

Blog posts about more-itertools:

  • Yo, I heard you like decorators
  • Tour of Python Itertools (Alternate)
  • Real-World Python More Itertools

Development

more-itertools is maintained by @erikrose and @bbayles, with help from many others.

Some notes on contributing:

  • In general, please make an issue before opening a pull request. Not all will be accepted, so please save yourself the trouble of creating a PR.
  • Exception: if you're fixing a documentation typo, you can skip making an issue.
  • If you've spotted a bug yourself, please make an issue with a description of the problem it causes in your own words.
  • If you're using a coding assistant or other automated tool to identify bugs, issues you create need to show examples of production code is affected by the problem. Sanitized code is OK; contrived examples aren't.
  • Issues and pull requests from coding assistants or other automated tools that don't follow these instructions will be closed summarily.

Version History

The version history can be found in documentation.

About

More routines for operating on iterables, beyond itertools

more-itertools.rtfd.io

Resources

Readme
MIT license
Activity
Custom properties

Stars

4.1k stars

Watchers

37 watching

Forks

412 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.