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 ,
sliced ,
distribute ,
divide ,
split_at ,
split_before ,
split_after ,
split_into ,
split_when ,
bucket ,
unzip ,
grouper ,
partition
Lookahead and lookback
spy ,
peekable ,
seekable
Windowing
windowed ,
substrings ,
substrings_indexes ,
stagger ,
pairwise
Augmenting
count_cycle ,
intersperse ,
padded ,
mark_ends ,
repeat_last ,
adjacent ,
groupby_transform ,
padnone ,
ncycles
Combining
collapse ,
sort_together ,
interleave ,
interleave_longest ,
zip_offset ,
zip_equal ,
dotproduct ,
flatten ,
roundrobin ,
prepend
Summarizing
ilen ,
unique_to_each ,
sample ,
consecutive_groups ,
run_length ,
map_reduce ,
exactly_n ,
is_sorted ,
all_equal ,
first_true ,
quantify
Selecting
islice_extended ,
first ,
last ,
one ,
only ,
strip ,
lstrip ,
rstrip ,
filter_except
map_except
nth_or_last ,
nth ,
take ,
tail ,
unique_everseen ,
unique_justseen
Combinatorics
distinct_permutations ,
distinct_combinations ,
circular_shifts ,
partitions ,
set_partitions ,
powerset ,
random_product ,
random_permutation ,
random_combination ,
random_combination_with_replacement ,
nth_combination
Wrapping
always_iterable ,
always_reversible ,
consumer ,
with_iter ,
iter_except
Others
locate ,
rlocate ,
replace ,
numeric_range ,
side_effect ,
iterate ,
difference ,
make_decorator ,
SequenceView ,
time_limited ,
consume ,
tabulate ,
repeatfunc
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!