From 35f2b05dca0cb83db278dfc9e1ddfee324b3b922 Mon Sep 17 00:00:00 2001 From: "Andrew M. Kuchling" Date: Thu, 18 Dec 2003 13:28:13 +0000 Subject: Add various items --- Doc/whatsnew/whatsnew24.tex | 64 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/Doc/whatsnew/whatsnew24.tex b/Doc/whatsnew/whatsnew24.tex index a881393..2ed3ab2 100644 --- a/Doc/whatsnew/whatsnew24.tex +++ b/Doc/whatsnew/whatsnew24.tex @@ -20,11 +20,13 @@ as-yet-undetermined ways. This article doesn't attempt to provide a complete specification of the new features, but instead provides a convenient overview. For -full details, you should refer to the documentation for Python 2.4. -% add hyperlink when the documentation becomes available online. +full details, you should refer to the documentation for Python 2.4, +such as the \citetitle[../lib/lib.html]{Python Library Reference} and +the \citetitle[../ref/ref.html]{Python Reference Manual}. If you want to understand the complete implementation and design rationale, refer to the PEP for a particular new feature. + %====================================================================== \section{PEP 218: Built-In Set Objects} @@ -67,12 +69,19 @@ Since it is immutable and hashable, it may be used as a dictionary key or as a member of another set. Accordingly, it does not have methods like \method{add()} and \method{remove()} which could alter its contents. +% XXX what happens to the sets module? + \begin{seealso} \seepep{218}{Adding a Built-In Set Object Type}{Originally proposed by Greg Wilson and ultimately implemented by Raymond Hettinger.} \end{seealso} %====================================================================== +\section{PEP 237: Unifying Long Integers and Integers} + +XXX write this. + +%====================================================================== \section{PEP 322: Reverse Iteration} A new built-in function, \function{reversed(seq)}, takes a sequence @@ -122,6 +131,16 @@ language. \method{center()} now take an optional argument for specifying a fill character other than a space. +\item Strings also gained an \method{rsplit()} method that +works like the \method{split()} method but splits from the end of the string. + +\begin{verbatim} +>>> 'a b c'.split(None, 1) +['a', 'b c'] +>>> 'a b c'.rsplit(None, 1) +['a b', 'c'] +\end{verbatim} + \item The \method{sort()} method of lists gained three keyword arguments, \var{cmp}, \var{key}, and \var{reverse}. These arguments make some common usages of \method{sort()} simpler. All are optional. @@ -177,7 +196,7 @@ they were input. For example, you can sort a list of people by name, and then sort the list by age, resulting in a list sorted by age where people with the same age are in name-sorted order. -\item There is a new builtin function \function{sorted(iterable)} that works +\item There is a new built-in function \function{sorted(iterable)} that works like the in-place \method{list.sort()} method but has been made suitable for use in expressions. The differences are: \begin{itemize} @@ -209,7 +228,6 @@ yellow 5 \end{verbatim} - \item The \function{zip()} built-in function and \function{itertools.izip()} now return an empty list instead of raising a \exception{TypeError} exception if called with no arguments. This makes the functions more @@ -312,10 +330,48 @@ counting, or identifying duplicate elements: ['a', 'b', 'r'] \end{verbatim} +\item \module{itertools} also gained a function named \function{tee(\var{iterator}, \var{N})} that returns \var{N} independent iterators +that replicate \var{iterator}. If \var{N} is omitted, the default is +2. + +\begin{verbatim} +>>> L = [1,2,3] +>>> i1, i2 = itertools.tee(L) +>>> i1,i2 +(, ) +>>> list(i1) +[1, 2, 3] +>>> list(i2) +[1, 2, 3] +>\end{verbatim} + +Note that \function{tee()} has to keep copies of the values returned +by the iterator; in the worst case it may need to keep all of them. +This should therefore be used carefully if \var{iterator} +returns a very large stream of results. + \item A new \function{getsid()} function was added to the \module{posix} module that underlies the \module{os} module. (Contributed by J. Raynor.) +\item The \module{operator} module gained two new functions, +\function{attrgetter(\var{attr})} and \function{itemgetter(\var{index})}. +Both functions return callables that take a single argument and return +the corresponding attribute or item; these callables are handy for use +with \function{map()} or \function{list.sort()}. For example, here's a simple +us + +\begin{verbatim} +>>> L = [('c', 2), ('d', 1), ('a', '4'), ('b', 3)] +>>> map(operator.itemgetter(0), L) +['c', 'd', 'a', 'b'] +>>> map(operator.itemgetter(1), L) +[2, 1, '4', 3] +>>> L.sort(key=operator.itemgetter(1)) # Sort list by second item in tuples +>>> L +[('d', 1), ('c', 2), ('b', 3), ('a', '4')] +\end{verbatim} + \item The \module{random} module has a new method called \method{getrandbits(N)} which returns an N-bit long integer. This method supports the existing \method{randrange()} method, making it possible to efficiently generate -- cgit v0.12