Sort documentation inaccurate?
David Glasser
news at davidglasser.net
Wed Sep 26 18:00:39 EDT 2001
More information about the Python-list mailing list
Wed Sep 26 18:00:39 EDT 2001
- Previous message (by thread): Simple base object for "struct like" classes
- Next message (by thread): Sort documentation inaccurate?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Bruce Dawson <comments at cygnus-software.com> wrote: > >>> mylist = [1, 2, 3, 5, 4, 6] > >>> def compare1(x, y): > ... return x < y > ... > >>> mylist.sort(compare1) > >>> mylist > [1, 2, 3, 5, 4, 6] The comparison "x < y" can return two values: 1 if x < y, and 0 if x >= y. But a sort function really needs to be more specific, differentiating between x < y, x > y, and x == y. The standard for sort functions, based on C's strcmp, is to return: -1 if x < y 0 if x == y +1 if x > y (It appears that any negative value is as good as -1, and any positive for +1, but the documentation just say those specific values.) This is, as you said, so a function can do something along the lines of "return x - y". The really good news, though, is that you can ignore most of this by using Python's cmp function. For example, to sort by absolute value: >>> x = [1, 0, -2, 52, -32, 4] >>> def abssort(x, y): ... return cmp(abs(x), abs(y)) ... >>> x.sort(abssort) >>> x [0, 1, -2, 4, -32, 52] -- David Glasser news at davidglasser.net http://www.davidglasser.net/
- Previous message (by thread): Simple base object for "struct like" classes
- Next message (by thread): Sort documentation inaccurate?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list