summaryrefslogtreecommitdiffstats
path: root/Doc/lib
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2004-01-20 20:04:40 (GMT)
committerRaymond Hettinger <python@rcn.com>2004-01-20 20:04:40 (GMT)
commit734fb5724ffd005fd13b1d7512b479554c5c9efd (patch)
treeb44ea37db06198e91b92ec71c0160c36113f03c3 /Doc/lib
parent57cb68fe93ab99e9dc3fb702755cfd8d914b6834 (diff)
downloadcpython-734fb5724ffd005fd13b1d7512b479554c5c9efd.zip
cpython-734fb5724ffd005fd13b1d7512b479554c5c9efd.tar.gz
cpython-734fb5724ffd005fd13b1d7512b479554c5c9efd.tar.bz2
Add a Guido inspired example for groupby().
Diffstat (limited to 'Doc/lib')
-rw-r--r--Doc/lib/libitertools.tex15
1 files changed, 14 insertions, 1 deletions
diff --git a/Doc/lib/libitertools.tex b/Doc/lib/libitertools.tex
index 51570ee..d07ef2b 100644
--- a/Doc/lib/libitertools.tex
+++ b/Doc/lib/libitertools.tex
@@ -406,12 +406,25 @@ Samuele
2 ['b', 'd', 'f']
3 ['g']
+# Find runs of consecutive numbers using groupby. The key to the solution
+# is differencing with a range so that consecutive numbers all appear in
+# same group.
+>>> data = [ 1, 4,5,6, 10, 15,16,17,18, 22, 25,26,27,28]
+>>> for k, g in groupby(enumerate(data), lambda (i,x):i-x):
+... print map(operator.itemgetter(1), g)
+...
+[1]
+[4, 5, 6]
+[10]
+[15, 16, 17, 18]
+[22]
+[25, 26, 27, 28]
\end{verbatim}
This section shows how itertools can be combined to create other more
powerful itertools. Note that \function{enumerate()} and \method{iteritems()}
-already have efficient implementations in Python. They are only included here
+already have efficient implementations. They are included here
to illustrate how higher level tools can be created from building blocks.
\begin{verbatim}