boltons/docs/iterutils.rst

119 lines
2.9 KiB
ReStructuredText
Raw Normal View History

``iterutils`` - ``itertools`` improvements
==========================================
2015-03-22 00:12:50 +00:00
.. automodule:: boltons.iterutils
2019-01-10 18:01:11 +00:00
.. contents:: Sections
:depth: 3
:local:
.. _iteration:
Iteration
---------
These are generators and convenient :class:`list`-producing
counterparts comprising several common patterns of iteration not
present in the standard library.
.. autofunction:: chunked
.. autofunction:: chunked_iter
.. autofunction:: chunk_ranges
.. autofunction:: pairwise
.. autofunction:: pairwise_iter
.. autofunction:: windowed
.. autofunction:: windowed_iter
.. autofunction:: unique
.. autofunction:: unique_iter
2020-07-10 15:37:07 +00:00
.. autofunction:: redundant
2020-06-22 05:30:24 +00:00
Stripping and splitting
-----------------------
A couple of :class:`str`-inspired mechanics that have come in handy on
iterables, too:
.. autofunction:: split
.. autofunction:: split_iter
.. autofunction:: strip
.. autofunction:: strip_iter
.. autofunction:: lstrip
.. autofunction:: lstrip_iter
.. autofunction:: rstrip
.. autofunction:: rstrip_iter
2015-09-21 09:40:33 +00:00
Nested
------
2015-09-24 10:36:22 +00:00
Nested data structures are common. Yet virtually all of Python's
compact iteration tools work with flat data: list comprehensions,
map/filter, generator expressions, itertools, even other
2015-09-24 18:51:21 +00:00
iterutils.
The functions below make working with nested iterables and other
containers as succinct and powerful as Python itself.
2015-09-21 09:40:33 +00:00
.. autofunction:: remap
.. autofunction:: get_path
2017-03-12 03:42:53 +00:00
.. autofunction:: research
2019-02-11 17:58:17 +00:00
.. autofunction:: flatten
.. autofunction:: flatten_iter
2015-09-21 09:40:33 +00:00
Numeric
-------
Number sequences are an obvious target of Python iteration, such as
the built-in :func:`range`, and
:func:`itertools.count`. Like the :ref:`iteration` members above,
these return iterators and lists, but take numeric inputs instead of
iterables.
.. autofunction:: backoff
.. autofunction:: backoff_iter
.. autofunction:: frange
.. autofunction:: xfrange
Categorization
--------------
These functions operate on iterables, dividing into groups based on a
given condition.
.. autofunction:: bucketize
.. autofunction:: partition
2019-02-11 17:58:17 +00:00
Sorting
-------
The built-in :func:`sorted()` is great, but what do you do when you want to
partially override the sort order?
.. autofunction:: soft_sorted
2020-06-22 05:30:24 +00:00
.. autofunction:: untyped_sorted
2019-02-11 17:58:17 +00:00
Reduction
---------
:func:`reduce` is a powerful function, but it is also very open-ended
and not always the most readable. The standard library recognized this
with the addition of :func:`sum`, :func:`all`, and :func:`any`. All
these functions take a basic operator (``+``, ``and``, and ``or``) and
use the operator to turn an iterable into a single value.
Functions in this category follow that same spirit, turning iterables
like lists into single values:
2015-07-30 08:58:47 +00:00
.. autofunction:: one
.. autofunction:: first
.. autofunction:: same
Type Checks
-----------
In the same vein as the feature-checking builtin, :func:`callable`.
.. autofunction:: is_iterable
.. autofunction:: is_scalar
2015-07-17 20:52:44 +00:00
.. autofunction:: is_collection