[Tutor] Puzzled by print lst.sort()
Liam Clarke
ml.cyresse at gmail.com
Sat Sep 30 14:08:37 CEST 2006
Dick Moores wrote:
> At 03:22 AM 9/30/2006, Liam Clarke wrote:
>> Dick Moores wrote:
>>>
>>> >>> lst = [5,3,7,6,2]
>>> >>> lst.sort()
>>> >>> lst
>>> [2, 3, 5, 6, 7]
>>> >>> lst = [5,3,7,6,2]
>>> >>> print lst.sort()
>>> None
>>> >>> lst
>>> [2, 3, 5, 6, 7]
>>>
>>> I'm wondering why "print lst.sort()" doesn't print the newly
>>> sorted
>>> list, but instead prints "None". In fact, the sorting has taken
>>> place
>>> because of "print lst.sort()". Is this behavior a Good Thing in
>>> Python?
>>>
>>> Dick
>>>
>>> _______________________________________________
>>> Tutor maillist -
>>> Tutor at python.org <mailto:Tutor at python.org>
>>>
>>> http://mail.python.org/mailman/listinfo/tutor
>>>
>>>
>> Hi Dick,
>>
>> A Python list sort is destructive, as you can see - it has modified
>> lst. So, to emphasise that it is destructive, it returns None. You'll
>> find this in most destructive methods and functions in Python.
>
> OK, but returning the new list would seem to make more sense. Is the
> reason sort() doesn't, really only that it is better to emphasize that
> it is destructive?
>
>> However, as of Python 2.4, there's a new built-in function that has
>> the functionality you want:
>>
>> >>> x = [3,1,2]
>> >>> y = sorted(x)
>> >>> print y
>> [1, 2, 3]
>> >>> print x
>> [3, 1, 2]
>>
>> You'll note that sorted() is *not *destructive - that is, x is not
>> modified.
>
> Didn't know about sorted(). Thanks, Liam.
>
> Dick
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
Oh, and PS - you'll find that list.reverse() also returns None.
More information about the Tutor
mailing list