summaryrefslogtreecommitdiffstats
path: root/Doc/lib
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2004-02-29 02:15:56 (GMT)
committerRaymond Hettinger <python@rcn.com>2004-02-29 02:15:56 (GMT)
commit738ec90ca14154493a88fb38728537837a45eebf (patch)
treebefdefcf9f592b569500ec15f5920535bf5a722c /Doc/lib
parentfe99927630caa7990a24573e49c5d823002d34d7 (diff)
downloadcpython-738ec90ca14154493a88fb38728537837a45eebf.zip
cpython-738ec90ca14154493a88fb38728537837a45eebf.tar.gz
cpython-738ec90ca14154493a88fb38728537837a45eebf.tar.bz2
Improvements to collections.deque():
* Add doctests for the examples in the library reference. * Add two methods, left() and right(), modeled after deques in C++ STL. * Apply the new method to asynchat.py. * Add comparison operators to make deques more substitutable for lists. * Replace the LookupErrors with IndexErrors to more closely match lists.
Diffstat (limited to 'Doc/lib')
-rw-r--r--Doc/lib/libcollections.tex29
1 files changed, 22 insertions, 7 deletions
diff --git a/Doc/lib/libcollections.tex b/Doc/lib/libcollections.tex
index 0378ea5..2793095 100644
--- a/Doc/lib/libcollections.tex
+++ b/Doc/lib/libcollections.tex
@@ -54,14 +54,24 @@ Deque objects support the following methods:
reversing the order of elements in the iterable argument.
\end{methoddesc}
+\begin{methoddesc}{left}{}
+ Return leftmost element from the deque.
+ If no elements are present, raises a \exception{IndexError}.
+\end{methoddesc}
+
\begin{methoddesc}{pop}{}
Remove and return an element from the right side of the deque.
- If no elements are present, raises a \exception{LookupError}.
+ If no elements are present, raises a \exception{IndexError}.
\end{methoddesc}
\begin{methoddesc}{popleft}{}
Remove and return an element from the left side of the deque.
- If no elements are present, raises a \exception{LookupError}.
+ If no elements are present, raises a \exception{IndexError}.
+\end{methoddesc}
+
+\begin{methoddesc}{right}{}
+ Return the rightmost element from the deque.
+ If no elements are present, raises a \exception{IndexError}.
\end{methoddesc}
\begin{methoddesc}{rotate}{n}
@@ -80,22 +90,27 @@ Example:
>>> from collections import deque
>>> d = deque('ghi') # make a new deque with three items
>>> for elem in d: # iterate over the deque's elements
- print elem.upper()
-
-
+... print elem.upper()
G
H
I
+
>>> d.append('j') # add a new entry to the right side
>>> d.appendleft('f') # add a new entry to the left side
>>> d # show the representation of the deque
deque(['f', 'g', 'h', 'i', 'j'])
+
>>> d.pop() # return and remove the rightmost item
'j'
>>> d.popleft() # return and remove the leftmost item
'f'
>>> list(d) # list the contents of the deque
['g', 'h', 'i']
+
+>>> d.left() # peek at leftmost item
+'g'
+>>> d.right() # peek at rightmost item
+'i'
>>> list(reversed(d)) # list the contents of a deque in reverse
['i', 'h', 'g']
>>> 'h' in d # search the deque
@@ -109,15 +124,15 @@ deque(['l', 'g', 'h', 'i', 'j', 'k'])
>>> d.rotate(-1) # left rotation
>>> d
deque(['g', 'h', 'i', 'j', 'k', 'l'])
+
>>> deque(reversed(d)) # make a new deque in reverse order
deque(['l', 'k', 'j', 'i', 'h', 'g'])
>>> d.clear() # empty the deque
>>> d.pop() # cannot pop from an empty deque
-
Traceback (most recent call last):
File "<pyshell#6>", line 1, in -toplevel-
d.pop()
-LookupError: pop from an empty deque
+IndexError: pop from an empty deque
>>> d.extendleft('abc') # extendleft() reverses the input order
>>> d