[Python-Dev] list.sorted() (original) (raw)

Raymond Hettinger raymond.hettinger at verizon.net
Sat Dec 6 15:54:21 EST 2003


When working on itertools.groupby(), the tutorial updates, and exercising the newer features, I've made frequent use of list.sorted().

The good news is that after using it many times, I no longer hate the name ;-) Also, it fits well inside list comps (and is expected to do the same with gen exps) plus it works well with itertools. In fact, it is a delight to use. One surprise use case was how nicely it works with unittest.TestCase.assertEqual() when verifying that two collections are equal with respect to permutation.

The bad news is that the list dot prefix adds no value, feels awkward, and interferes with the eye's ability to parse expressions containing list.sorted().

Part of the reason for making it a classmethod was that it is effectively an alternative constructor for lists. OTOH, that could be said for any function that returns a list.

The two disadvantages of having it as a classmethod are the mandatory list dot prefix and that it is confusing when called with an existing list:

[f(elem, arg) for elem in [3,2,1].sorted(anotherseq)]

It's up to someone else to propose the obvious solutions -- I've already gone over my quota and am running low on asbestos ;-)

Whatever the answer, it's important that the result look clean when used in gen exps or as an argument to functions expecting a sequence.

Raymond Hettinger



More information about the Python-Dev mailing list