[Python-Dev] decorate-sort-undecorate
Raymond Hettinger
python at rcn.com
Thu Oct 16 10:26:50 EDT 2003
[Alex Martelli]
> I thought the idea being implemented avoided making a new list --
> i.e., that the idea being implemented is the equivalent of:
>
> # decorate
> for i, item in enumerate(thelist):
> thelist[i] = CleverWrapper((key(item), item))
>
> # sort (with the new stability guarantee)
> thelist.sort()
>
> # undecorate
> for i, item in enumerate(thelist):
> thelist[i] = item[1]
>
> where (the equivalent of):
>
> class CleverWrapper(tuple):
> def __cmp__(self, other): return cmp(self[0], other[0])
>
> so, there is no allocation of another list -- just (twice) a
repopulation
> of the existing one. How _important_ that is to performance, I dunno,
> but wanted to double-check on my understanding of this anyway.
Yes, that is how it works in a nutshell ;-)
Of course, it looks more impressive and was harder to write in C.
Raymond Hettinger
More information about the Python-Dev
mailing list