{same as \code{del \var{s}[\var{s}.index(\var{x})]}}{(3)}
\lineiii{\var{s}.reverse()}
{reverses the items of \var{s} in place}{(6)}
- \lineiii{\var{s}.sort(\optional{\var{cmpfunc}})}
+ \lineiii{\var{s}.sort(\optional{\var{cmpfunc=None}})}
{sort the items of \var{s} in place}{(6), (7), (8), (9)}
\end{tableiii}
\indexiv{operations on}{mutable}{sequence}{types}
the first argument is considered smaller than, equal to, or larger
than the second argument. Note that this slows the sorting process
down considerably; e.g. to sort a list in reverse order it is much
- faster to call method \method{sort()} followed by
- \method{reverse()} than to use method
- \method{sort()} with a comparison function that reverses the
- ordering of the elements.
+ faster to call method \method{sort()} followed by \method{reverse()}
+ than to use method \method{sort()} with a comparison function that
+ reverses the ordering of the elements. Passing \constant{None} as the
+ comparison function is semantically equivalent to calling
+ \method{sort()} with no comparison function.
\item[(8)] Whether the \method{sort()} method is stable is not defined by
the language (a sort is stable if it guarantees not to change the
bug453523()
+def cmpNone():
+ global nerrors
+
+ if verbose:
+ print "Testing None as a comparison function."
+
+ L = range(50)
+ random.shuffle(L)
+ try:
+ L.sort(None)
+ except TypeError:
+ print " Passing None as cmpfunc failed."
+ nerrors += 1
+ else:
+ if L != range(50):
+ print " Passing None as cmpfunc failed."
+ nerrors += 1
+
+cmpNone()
+
if nerrors:
print "Test failed", nerrors
elif verbose:
if (!PyArg_UnpackTuple(args, "sort", 0, 1, &compare))
return NULL;
}
+ if (compare == Py_None)
+ compare = NULL;
+
merge_init(&ms, compare);
/* The list is temporarily made empty, so that mutations performed
PyDoc_STRVAR(reverse_doc,
"L.reverse() -- reverse *IN PLACE*");
PyDoc_STRVAR(sort_doc,
-"L.sort([cmpfunc]) -- stable sort *IN PLACE*; cmpfunc(x, y) -> -1, 0, 1");
+"L.sort(cmpfunc=None) -- stable sort *IN PLACE*; cmpfunc(x, y) -> -1, 0, 1");
static PyMethodDef list_methods[] = {
{"append", (PyCFunction)listappend, METH_O, append_doc},