Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
f76b9209
Commit
f76b9209
authored
Feb 17, 2009
by
Raymond Hettinger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixup intro paragraphs for the itertools docs. Add some tables for quick reference.
parent
a30337aa
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
48 additions
and
26 deletions
+48
-26
Doc/library/itertools.rst
Doc/library/itertools.rst
+48
-26
No files found.
Doc/library/itertools.rst
View file @
f76b9209
...
@@ -13,39 +13,61 @@
...
@@ -13,39 +13,61 @@
from itertools import *
from itertools import *
This module implements a number of :term:`iterator` building blocks inspired
by
This module implements a number of :term:`iterator` building blocks inspired
constructs from the Haskell and SML programming languages. Each has been recast
by constructs from APL, Haskell, and SML. Each has been recast in a form
in a form
suitable for Python.
suitable for Python.
The module standardizes a core set of fast, memory efficient tools that are
The module standardizes a core set of fast, memory efficient tools that are
useful by themselves or in combination. Standardization helps avoid the
useful by themselves or in combination. Together, they form an "iterator
readability and reliability problems which arise when many different individuals
algebra" making it possible to construct specialized tools succinctly and
create their own slightly varying implementations, each with their own quirks
efficiently in pure Python.
and naming conventions.
The tools are designed to combine readily with one another. This makes it easy
to construct more specialized tools succinctly and efficiently in pure Python.
For instance, SML provides a tabulation tool: ``tabulate(f)`` which produces a
For instance, SML provides a tabulation tool: ``tabulate(f)`` which produces a
sequence ``f(0), f(1), ...``. But, this effect can be achieved in Python
sequence ``f(0), f(1), ...``. But, this effect can be achieved in Python
by combining :func:`map` and :func:`count` to form ``map(f, count())``.
by combining :func:`map` and :func:`count` to form ``map(f, count())``.
Likewise, the functional tools are designed to work well with the high-speed
The tools also work well with the high-speed functions in the :mod:`operator`
functions provided by the :mod:`operator` module.
module. For example, the plus-operator can be mapped across two vectors to
form an efficient dot-product: ``sum(map(operator.add, vector1, vector2))``.
Whether cast in pure python form or compiled code, tools that use iterators are
more memory efficient (and often faster) than their list based counterparts. Adopting
the principles of just-in-time manufacturing, they create data when and where
**Infinite Iterators:**
needed instead of consuming memory with the computer equivalent of "inventory".
================== ================= =================================================
Iterator Arguments Results
.. seealso::
================== ================= =================================================
:func:`count` start, [step] start, start+step, start+2*step, ...
The Standard ML Basis Library, `The Standard ML Basis Library
:func:`cycle` p p0, p1, ... plast, p0, p1, ...
<http://www.standardml.org/Basis/>`_.
:func:`repeat` elem [,n] elem, elem, elem, ... endlessly or up to n times
================== ================= =================================================
Haskell, A Purely Functional Language, `Definition of Haskell and the Standard
Libraries <http://www.haskell.org/definition/>`_.
**Iterators terminating on the shortest input sequence:**
==================== ============================ =================================================
Iterator Arguments Results
==================== ============================ =================================================
:func:`chain` p, q, ... p0, p1, ... plast, q0, q1, ...
:func:`compress` data, selectors (d[0] if s[0]), (d[1] if s[1]), ...
:func:`dropwhile` pred, seq seq[n], seq[n+1], starting when pred fails
:func:`filterfalse` pred, seq elements of seq where pred(elem) is False
:func:`groupby` iterable[, keyfunc] sub-iterators grouped by value of keyfunc(v)
:func:`islice` seq, [start,] stop [, step] elements from seq[start:stop:step]
:func:`starmap` func, seq func(\*seq[0]), fun(\*seq[1]), ...
:func:`tee` it, n it1, it2 , ... itn splits one iterator into n
:func:`takewhile` pred, seq seq[0], seq[1], until pred fails
:func:`zip_longest` p, q, ... (p[0], q[0]), (p[1], q[1]), ...
==================== ============================ =================================================
**Combinatoric generators:**
===================================== ==================== =================================================
Iterator Arguments Results
===================================== ==================== =================================================
:func:`product` p, q, ... [repeat=1] cartesian product
:func:`permutations` p[, r] r-length permutations (without repeated elements)
:func:`combinations` p[, r] r-length combinations (sorted and no repeats)
:func:`combinations_with_replacement` p[, r] r-length combinations (sorted but with repeats)
===================================== ==================== =================================================
.. _itertools-functions:
.. _itertools-functions:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment