[Tutor] Puzzled by print lst.sort()

Liam Clarke ml.cyresse at gmail.com
Sat Sep 30 12:22:16 CEST 2006


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
> 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.

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.

Regards,

Liam Clarke
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20060930/1a19d582/attachment.html 


More information about the Tutor mailing list