]> granicus.if.org Git - python/commitdiff
Mention list.sort()
authorAndrew M. Kuchling <amk@amk.ca>
Tue, 6 Aug 2002 01:40:48 +0000 (01:40 +0000)
committerAndrew M. Kuchling <amk@amk.ca>
Tue, 6 Aug 2002 01:40:48 +0000 (01:40 +0000)
Document heapq module
Add PEP263 section (not sure I really understand the PEP's effect on 8-bit
   strings, though -- will have to experiment with it)

Doc/whatsnew/whatsnew23.tex

index 283a66be8050ca8f65556154febe75bb6c7d56a5..96a41237de6886c27f5656348ba6eeb3cbbf45ba 100644 (file)
@@ -1,9 +1,6 @@
 \documentclass{howto}
 % $Id$
 
-% TODO:
-%   Go through and get the contributor's name for all the various changes
-
 \title{What's New in Python 2.3}
 \release{0.03}
 \author{A.M. Kuchling}
 
 % Optik (or whatever it gets called)
 %
-% Bug #580462: changes to GC API
-%
-% heapq module
-%
 % MacOS framework-related changes (section of its own, probably)
 %
+% New sorting code
 
 %\section{Introduction \label{intro}}
 
@@ -190,6 +184,37 @@ and Tim Peters, with other fixes from the Python Labs crew.}
 \end{seealso}
 
 
+%======================================================================
+\section{PEP 263: \label{section-encodings}}
+
+Python source files can now be declared as being in different
+character set encodings.  Encodings are declared by including a
+specially formatted comment in the first or second line of the source
+file.  For example, a UTF-8 file can be declared with:
+
+\begin{verbatim}
+#!/usr/bin/env python
+# -*- coding: UTF-8 -*-
+\end{verbatim}
+
+Without such an encoding declaration, the default encoding used is
+ISO-8859-1, also known as Latin1.  
+
+The encoding declaration only affects Unicode string literals; the
+text in the source code will be converted to Unicode using the
+specified encoding.  Note that Python identifiers are still restricted
+to ASCII characters, so you can't have variable names that use
+characters outside of the usual alphanumerics.
+
+\begin{seealso}
+
+\seepep{263}{Defining Python Source Code Encodings}{Written by
+Marc-Andr\'e Lemburg and Martin von L\"owis; implemented by Martin von
+L\"owis.}
+
+\end{seealso}
+
+
 %======================================================================
 \section{PEP 278: Universal Newline Support}
 
@@ -558,6 +583,10 @@ code that doesn't execute any assertions.
    either kind of string.  It's a completely abstract type, so you
    can't create \class{basestring} instances.
 
+\item The \method{sort()} method of list objects has been extensively
+rewritten by Tim Peters, and the implementation is significantly
+faster.
+
 \item Most type objects are now callable, so you can use them
 to create new objects such as functions, classes, and modules.  (This
 means that the \module{new} module can be deprecated in a future
@@ -675,6 +704,52 @@ now return enhanced tuples:
 ('amk', 500)
 \end{verbatim}
 
+\item The new \module{heapq} module contains an implementation of a
+heap queue algorithm.  A heap is an array-like data structure that
+keeps items in a sorted order such that, for every index k, heap[k] <=
+heap[2*k+1] and heap[k] <= heap[2*k+2].  This makes it quick to remove
+the smallest item, and inserting a new item while maintaining the heap
+property is O(lg~n).  (See
+\url{http://www.nist.gov/dads/HTML/priorityque.html} for more
+information about the priority queue data structure.)
+
+The Python \module{heapq} module provides \function{heappush()} and
+\function{heappop()} functions for adding and removing items while
+maintaining the heap property on top of some other mutable Python
+sequence type.  For example:
+
+\begin{verbatim}
+>>> import heapq
+>>> heap = []
+>>> for item in [3, 7, 5, 11, 1]:
+...    heapq.heappush(heap, item)
+...
+>>> heap
+[1, 3, 5, 11, 7]
+>>> heapq.heappop(heap)
+1
+>>> heapq.heappop(heap)
+3
+>>> heap
+[5, 7, 11]
+>>>
+>>> heapq.heappush(heap, 5)
+>>> heap = []
+>>> for item in [3, 7, 5, 11, 1]:
+...    heapq.heappush(heap, item)
+...
+>>> heap
+[1, 3, 5, 11, 7]
+>>> heapq.heappop(heap)
+1
+>>> heapq.heappop(heap)
+3
+>>> heap
+[5, 7, 11]
+>>>
+\end{verbatim}
+
+(Contributed by Kevin O'Connor.)
 
 \item Two new functions in the \module{math} module, 
 \function{degrees(\var{rads})} and \function{radians(\var{degs})},
@@ -978,6 +1053,12 @@ as well as \UNIX.
 \end{itemize}
 
 
+%======================================================================
+\section{Porting to Python 2.3}
+
+XXX write this
+
+
 %======================================================================
 \section{Acknowledgements \label{acks}}
 
@@ -985,6 +1066,6 @@ The author would like to thank the following people for offering
 suggestions, corrections and assistance with various drafts of this
 article: Michael Chermside, Scott David Daniels, Fred~L. Drake, Jr.,
 Michael Hudson, Detlef Lannert, Martin von L\"owis, Andrew MacIntyre,
-Gustavo Niemeyer, Neal Norwitz.
+Gustavo Niemeyer, Neal Norwitz, Jason Tishler.
 
 \end{document}