Library function for sorting
Paul Winkler
slinkp23 at yahoo.com
Wed Oct 17 00:24:25 EDT 2001
On 17 Oct 2001 02:06:33 GMT, Michael Yuen <myuen at acs2.acs.ucalgary.ca> wrote:
>I'm really new to this Python stuff and was wondering if there's a
>library function for sorting strings. I sure there is one but haven't
>been able to find one when I looked through the documentation.
The usual way is to put them in a list and use the list's sort()
method. By default, this sorts in ASCII order - e.g. capitals in
alphabetical order, then lowercase in alphabetical order. Example:
>>> words = ['foo', 'bar', 'Baz', 'bat', 'baf', 'spam', 'eggs', 'bacon']
>>> words.sort()
>>> words
['Baz', 'bacon', 'baf', 'bar', 'bat', 'eggs', 'foo', 'spam']
See the standard library reference, section 2.1.5.4, for more on list
methods.
If you want to sort by some other algorithm, pass in a comparison
function. The comparison function should return 1, 0, or -1, as
described in the reference above. The list will be put in *ascending*
order according to this function. Example: Let's sort a list of
strings by the last character in each string, ignoring the case.
>>> def cmp_last_nocase(a, b):
... aLast = a[-1].upper() # force all to uppercase
... bLast = b[-1].upper() # for purposes of comparison
... if aLast > bLast: return 1
... elif aLast == bLast: return 0
... else: return -1
...
>>> words.sort(cmp_last_nocase) # pass the function - don't call it!
>>> words
['baf', 'spam', 'bacon', 'foo', 'bar', 'eggs', 'bat', 'Baz']
Hope that helps...
--PW
More information about the Python-list
mailing list