[Python-Dev] inline sort option
Guido van Rossum
guido at python.org
Thu Oct 16 14:03:26 EDT 2003
> Are you proposing something like:
>
> print mylist.sort(inplace=False) # prints a new, sorted list while
> # leaving the original list intact
>
>
> which would be implemented something like this:
>
> def inlinesort(alist, *args, **kwds):
> newref = alist[:]
> newref.sort(*args, **kwds)
> return newref
>
>
> If that is what you're after, I think it is a good idea. It avoids the
> perils of mutating methods returning self. It is explicit and pleasing
> to write:
>
> for elem in mylist.sort(inplace=False):
> . . .
>
> It is extra nice in a list comprehension:
>
> peckingorder = [d.name for d in duck.sort(key=seniority,
> inplace=False)]
>
> Instead of "inplace=False", an alternative is "inline=True".
*If* we're going to consider this, I would recommend using a different
method name rather than a keyword argument. Arguments whose value
changes the return type present a problem for program analysis tools
like type checkers (and IMO are also easily overseen by human
readers). And, it's easier to write l.sorted() rather than
l.sort(inline=True).
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-Dev
mailing list