Add some cross-references to the docs. Simplify the python code equivalent for izip(). Supply an optional argument for the nth() recipe.

This commit is contained in:
Raymond Hettinger 2009-02-19 05:38:53 +00:00
parent 3e96e231fb
commit 5894c2b548
3 changed files with 16 additions and 10 deletions

View File

@ -397,6 +397,9 @@ available. They are listed here in alphabetical order.
iterable if function(item)]`` if function is not ``None`` and ``[item for item iterable if function(item)]`` if function is not ``None`` and ``[item for item
in iterable if item]`` if function is ``None``. in iterable if item]`` if function is ``None``.
See :func:`itertools.filterfalse` for the complementary function that returns
elements of *iterable* for which *function* returns false.
.. function:: float([x]) .. function:: float([x])
@ -1077,7 +1080,8 @@ available. They are listed here in alphabetical order.
default). They have no other explicit functionality; however they are used by default). They have no other explicit functionality; however they are used by
Numerical Python and other third party extensions. Slice objects are also Numerical Python and other third party extensions. Slice objects are also
generated when extended indexing syntax is used. For example: generated when extended indexing syntax is used. For example:
``a[start:stop:step]`` or ``a[start:stop, i]``. ``a[start:stop:step]`` or ``a[start:stop, i]``. See :func:`itertools.islice`
for an alternate version that returns an iterator.
.. function:: sorted(iterable[, cmp[, key[, reverse]]]) .. function:: sorted(iterable[, cmp[, key[, reverse]]])
@ -1160,6 +1164,7 @@ available. They are listed here in alphabetical order.
and are not allowed to be strings. The fast, correct way to concatenate a and are not allowed to be strings. The fast, correct way to concatenate a
sequence of strings is by calling ``''.join(sequence)``. Note that sequence of strings is by calling ``''.join(sequence)``. Note that
``sum(range(n), m)`` is equivalent to ``reduce(operator.add, range(n), m)`` ``sum(range(n), m)`` is equivalent to ``reduce(operator.add, range(n), m)``
To add floating point values with extended precision, see :func:`math.fsum`\.
.. versionadded:: 2.3 .. versionadded:: 2.3
@ -1323,7 +1328,9 @@ available. They are listed here in alphabetical order.
:func:`xrange` is intended to be simple and fast. Implementations may impose :func:`xrange` is intended to be simple and fast. Implementations may impose
restrictions to achieve this. The C implementation of Python restricts all restrictions to achieve this. The C implementation of Python restricts all
arguments to native C longs ("short" Python integers), and also requires that arguments to native C longs ("short" Python integers), and also requires that
the number of elements fit in a native C long. the number of elements fit in a native C long. If a larger range is needed,
an alternate version can be crafted using the :mod:`itertools` module:
``islice(count(start, step), (stop-start+step-1)//step)``.
.. function:: zip([iterable, ...]) .. function:: zip([iterable, ...])

View File

@ -338,8 +338,7 @@ loops that truncate the stream.
# izip('ABCD', 'xy') --> Ax By # izip('ABCD', 'xy') --> Ax By
iterables = map(iter, iterables) iterables = map(iter, iterables)
while iterables: while iterables:
result = [it.next() for it in iterables] yield yield tuple(map(next, iterables))
yield tuple(result)
.. versionchanged:: 2.4 .. versionchanged:: 2.4
When no iterables are specified, returns a zero length iterator instead of When no iterables are specified, returns a zero length iterator instead of
@ -613,9 +612,9 @@ which incur interpreter overhead.
"Return function(0), function(1), ..." "Return function(0), function(1), ..."
return imap(function, count(start)) return imap(function, count(start))
def nth(iterable, n): def nth(iterable, n, default=None):
"Returns the nth item or None" "Returns the nth item or a default value"
return next(islice(iterable, n, None), None) return next(islice(iterable, n, None), default)
def quantify(iterable, pred=bool): def quantify(iterable, pred=bool):
"Count how many times the predicate is true" "Count how many times the predicate is true"

View File

@ -1200,9 +1200,9 @@ Samuele
... "Return function(0), function(1), ..." ... "Return function(0), function(1), ..."
... return imap(function, count(start)) ... return imap(function, count(start))
>>> def nth(iterable, n): >>> def nth(iterable, n, default=None):
... "Returns the nth item or None" ... "Returns the nth item or a default value"
... return next(islice(iterable, n, None), None) ... return next(islice(iterable, n, None), default)
>>> def quantify(iterable, pred=bool): >>> def quantify(iterable, pred=bool):
... "Count how many times the predicate is true" ... "Count how many times the predicate is true"