More Itertools
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 ,
dotproduct ,
convolve ,
flatten ,
roundrobin ,
prepend ,
value_chain ,
partial_product
Summarizing
ilen ,
unique_to_each ,
sample ,
consecutive_groups ,
run_length ,
map_reduce ,
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 ,
nth_or_last ,
unique_in_window ,
before_and_after ,
nth ,
take ,
tail ,
unique_everseen ,
unique_justseen ,
duplicates_everseen ,
duplicates_justseen ,
longest_common_prefix ,
takewhile_inclusive
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 ,
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 ,
polynomial_from_roots ,
polynomial_eval ,
polynomial_derivative ,
sieve ,
factor ,
matmul ,
sum_of_squares
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
:
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 .