Improve docs:

* Simplify the pure python examples
* Add a quantify() example
This commit is contained in:
Raymond Hettinger 2003-08-08 02:40:28 +00:00
parent f5c96fb74d
commit c7d7766fda
1 changed files with 13 additions and 16 deletions

View File

@ -78,7 +78,7 @@ by functions or loops that truncate the stream.
Make an iterator that returns consecutive integers starting with \var{n}. Make an iterator that returns consecutive integers starting with \var{n}.
Does not currently support python long integers. Often used as an Does not currently support python long integers. Often used as an
argument to \function{imap()} to generate consecutive data points. argument to \function{imap()} to generate consecutive data points.
Also, used in \function{izip()} to add sequence numbers. Equivalent to: Also, used with \function{izip()} to add sequence numbers. Equivalent to:
\begin{verbatim} \begin{verbatim}
def count(n=0): def count(n=0):
@ -103,9 +103,7 @@ by functions or loops that truncate the stream.
for element in iterable: for element in iterable:
yield element yield element
saved.append(element) saved.append(element)
if len(saved) == 0: while saved:
return
while True:
for element in saved: for element in saved:
yield element yield element
\end{verbatim} \end{verbatim}
@ -124,13 +122,12 @@ by functions or loops that truncate the stream.
\begin{verbatim} \begin{verbatim}
def dropwhile(predicate, iterable): def dropwhile(predicate, iterable):
iterable = iter(iterable) iterable = iter(iterable)
while True: for x in iterable:
x = iterable.next() if not predicate(x):
if predicate(x): continue # drop when predicate is true yield x
break
for x in iterable:
yield x yield x
break
while True:
yield iterable.next()
\end{verbatim} \end{verbatim}
\end{funcdesc} \end{funcdesc}
@ -209,9 +206,7 @@ by functions or loops that truncate the stream.
\begin{verbatim} \begin{verbatim}
def islice(iterable, *args): def islice(iterable, *args):
s = slice(*args) s = slice(*args)
next = s.start or 0 next, stop, step = s.start or 0, s.stop, s.step or 1
stop = s.stop
step = s.step or 1
for cnt, element in enumerate(iterable): for cnt, element in enumerate(iterable):
if cnt < next: if cnt < next:
continue continue
@ -278,9 +273,7 @@ by functions or loops that truncate the stream.
\begin{verbatim} \begin{verbatim}
def takewhile(predicate, iterable): def takewhile(predicate, iterable):
iterable = iter(iterable) for x in iterable:
while True:
x = iterable.next()
if predicate(x): if predicate(x):
yield x yield x
else: else:
@ -358,6 +351,10 @@ from building blocks.
... "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):
... "Count how many times the predicate is True in the sequence"
... 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))