ok, so how do I return a sorted list without doing it in place
Niklas Frykholm
r2d2 at mao.acc.umu.se
Mon Feb 19 03:14:35 EST 2001
In article <96kg77$88c at dispatch.concentric.net>, Phlip wrote:
>Proclaimed Sean 'Shaleh' Perry from the mountaintops:
>
>> So, several of us informed Philip that list.sort() is in place and returns
>> nothing. How do i accomplish:
>>
>> for key in dict.keys().sort():
>> print "%s -> %s" % (key, dict[key])
>>
>> ???
>>
>> I know I can do:
>>
>> list = dict.keys()
>> list.sort()
>> .....
>>
>> but it is just plain annoying.
>
>I don't know why a more useful return value couldn't have been supplied,
>for call chaining like this at least, but Mr. Manners reminds the Gentle
>Poster that one should not cram too much stuff on one command line. Leave
>that for Perl or C++ coders.
I really like the way ruby has solved this, by providing two functions:
sort and sort!, where sort! sorts the list in place and sort returns a
sorted copy. The exclamation mark is used to denote a method that
changes the object in-place. With this convention you do not have to
remember whether a function works in-place or on a copy.
Many other similar functions also have two variants, for example there is
a map function and a map! function.
// Niklas
More information about the Python-list
mailing list