]> granicus.if.org Git - python/commitdiff
Improve docs:
authorRaymond Hettinger <python@rcn.com>
Fri, 8 Aug 2003 02:40:28 +0000 (02:40 +0000)
committerRaymond Hettinger <python@rcn.com>
Fri, 8 Aug 2003 02:40:28 +0000 (02:40 +0000)
* Simplify the pure python examples
* Add a quantify() example

Doc/lib/libitertools.tex

index d17fc6fc8348f2d9dcfb283cd3dab1198d945019..b708050190dbd4eddb6ef32f95e85af989a20f85 100644 (file)
@@ -78,7 +78,7 @@ by functions or loops that truncate the stream.
   Make an iterator that returns consecutive integers starting with \var{n}.
   Does not currently support python long integers.  Often used as an
   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}
      def count(n=0):
@@ -103,9 +103,7 @@ by functions or loops that truncate the stream.
          for element in iterable:
              yield element
              saved.append(element)
-         if len(saved) == 0:
-             return
-         while True:
+         while saved:
              for element in saved:
                    yield element
   \end{verbatim}
@@ -124,13 +122,12 @@ by functions or loops that truncate the stream.
   \begin{verbatim}
      def dropwhile(predicate, iterable):
          iterable = iter(iterable)
-         while True:
-             x = iterable.next()
-             if predicate(x): continue # drop when predicate is true
+         for x in iterable:
+             if not predicate(x):
+                 yield x
+                 break
+         for x in iterable:
              yield x
-             break
-         while True:
-             yield iterable.next()
   \end{verbatim}
 \end{funcdesc}
 
@@ -209,9 +206,7 @@ by functions or loops that truncate the stream.
   \begin{verbatim}
      def islice(iterable, *args):
          s = slice(*args)
-         next = s.start or 0
-         stop = s.stop
-         step = s.step or 1
+         next, stop, step = s.start or 0, s.stop, s.step or 1
          for cnt, element in enumerate(iterable):
              if cnt < next:
                  continue
@@ -278,9 +273,7 @@ by functions or loops that truncate the stream.
 
   \begin{verbatim}
      def takewhile(predicate, iterable):
-         iterable = iter(iterable)
-         while True:
-             x = iterable.next()
+         for x in iterable:
              if predicate(x):
                  yield x
              else:
@@ -358,6 +351,10 @@ from building blocks.
 ...     "Returns True if pred(x) is False for every element in the iterable"
 ...     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):
 ...     "Returns the sequence elements and then returns None indefinitely"
 ...     return chain(seq, repeat(None))