mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Make the derived tools amendable to cut and paste.
This commit is contained in:
parent
9bd308f67b
commit
9e3864190c
1 changed files with 42 additions and 42 deletions
|
@ -328,59 +328,59 @@ included here to illustrate how higher level tools can be created
|
||||||
from building blocks.
|
from building blocks.
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
>>> def enumerate(iterable):
|
def enumerate(iterable):
|
||||||
... return izip(count(), iterable)
|
return izip(count(), iterable)
|
||||||
|
|
||||||
>>> def tabulate(function):
|
def tabulate(function):
|
||||||
... "Return function(0), function(1), ..."
|
"Return function(0), function(1), ..."
|
||||||
... return imap(function, count())
|
return imap(function, count())
|
||||||
|
|
||||||
>>> def iteritems(mapping):
|
def iteritems(mapping):
|
||||||
... return izip(mapping.iterkeys(), mapping.itervalues())
|
return izip(mapping.iterkeys(), mapping.itervalues())
|
||||||
|
|
||||||
>>> def nth(iterable, n):
|
def nth(iterable, n):
|
||||||
... "Returns the nth item"
|
"Returns the nth item"
|
||||||
... return list(islice(iterable, n, n+1))
|
return list(islice(iterable, n, n+1))
|
||||||
|
|
||||||
>>> def all(pred, seq):
|
def all(pred, seq):
|
||||||
... "Returns True if pred(x) is True for every element in the iterable"
|
"Returns True if pred(x) is True for every element in the iterable"
|
||||||
... return False not in imap(pred, seq)
|
return False not in imap(pred, seq)
|
||||||
|
|
||||||
>>> def some(pred, seq):
|
def some(pred, seq):
|
||||||
... "Returns True if pred(x) is True at least one element in the iterable"
|
"Returns True if pred(x) is True at least one element in the iterable"
|
||||||
... return True in imap(pred, seq)
|
return True in imap(pred, seq)
|
||||||
|
|
||||||
>>> def no(pred, seq):
|
def no(pred, seq):
|
||||||
... "Returns True if pred(x) is False for every element in the iterable"
|
"Returns True if pred(x) is False for every element in the iterable"
|
||||||
... return True not in imap(pred, seq)
|
return True not in imap(pred, seq)
|
||||||
|
|
||||||
>>> def quantify(pred, seq):
|
def quantify(pred, seq):
|
||||||
... "Count how many times the predicate is True in the sequence"
|
"Count how many times the predicate is True in the sequence"
|
||||||
... return sum(imap(pred, seq))
|
return sum(imap(pred, seq))
|
||||||
|
|
||||||
>>> def padnone(seq):
|
def padnone(seq):
|
||||||
... "Returns the sequence elements and then returns None indefinitely"
|
"Returns the sequence elements and then returns None indefinitely"
|
||||||
... return chain(seq, repeat(None))
|
return chain(seq, repeat(None))
|
||||||
|
|
||||||
>>> def ncycles(seq, n):
|
def ncycles(seq, n):
|
||||||
... "Returns the sequence elements n times"
|
"Returns the sequence elements n times"
|
||||||
... return chain(*repeat(seq, n))
|
return chain(*repeat(seq, n))
|
||||||
|
|
||||||
>>> def dotproduct(vec1, vec2):
|
def dotproduct(vec1, vec2):
|
||||||
... return sum(imap(operator.mul, vec1, vec2))
|
return sum(imap(operator.mul, vec1, vec2))
|
||||||
|
|
||||||
>>> def window(seq, n=2):
|
def window(seq, n=2):
|
||||||
... "Returns a sliding window (of width n) over data from the iterable"
|
"Returns a sliding window (of width n) over data from the iterable"
|
||||||
... " s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ... "
|
" s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ... "
|
||||||
... it = iter(seq)
|
it = iter(seq)
|
||||||
... result = tuple(islice(it, n))
|
result = tuple(islice(it, n))
|
||||||
... if len(result) == n:
|
if len(result) == n:
|
||||||
... yield result
|
yield result
|
||||||
... for elem in it:
|
for elem in it:
|
||||||
... result = result[1:] + (elem,)
|
result = result[1:] + (elem,)
|
||||||
... yield result
|
yield result
|
||||||
|
|
||||||
>>> def take(n, seq):
|
def take(n, seq):
|
||||||
... return list(islice(seq, n))
|
return list(islice(seq, n))
|
||||||
|
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue