On Tue, 22 Nov 2005 08:53:07 -0800, rurpy wrote: > I am not a complete newb at python, but I am still pretty new. > I too thought immediately that the output should be 3,2,1, 1,2,3.
What you are saying is that a.reverse() should *both* change a in place *and* return a reference to the same list. > I used reverse() and sort() a couple time and of course read > the docs before I did. I noted they do the change inplace, and > don't find rememering that to be a terrible burden. Actually, I > get rather annoyed by the comment that they return None "as > a reminder" that the change is inplace. How arrogant! While > I'm sure the designers had kindly intentions. my memory, though > bad, is not that bad, and I object to being forced to write code > that is more clunky than need be, because the designers thought > they needed to help me with my memory. Built-in methods with side-effects (sort, reverse, update, clear, etc.) return None because every function must return something, not because it is a reminder. Python is not Pascal, and there are no procedures. There are four possibilities for a construction like list.sort(): (1) sort the list in place and return a reference to the same list; (2) sort the list in place and return a copy of the same list; (3) sort the list in place and return None; (4) don't sort in place and return a sorted list. No solution is always right, no solution is always wrong, but the most flexible is a combination of (3) and (4). Python now has that with sort() and sorted(). Prior to the addition of sorted() to the language, (3) was considered the best solution because of a simple Python principle: never duplicate objects unless explicitly told to. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list