On Wed, 02 May 2007 06:10:54 +0000, Tim Roberts wrote:

> Michael Hoffman <[EMAIL PROTECTED]> wrote:
>>
>>Hint: if you find yourself using a decorate-sort-undecorate pattern, 
>>sorted(key=func) or sequence.sort(key=func) might be a better idea.
> 
> Is it?  I thought I remember reading on this very list some years ago that
> the performance of sequence.sort became much, much worse when a key
> function was supplied.

You're probably thinking of a comparison function:

sequence.sort(cmp=lambda x, y: cmp(y, x)) 

is a slow way of sorting a sequence in reverse order. The fast
way is the two liner:

sequence.sort() 
sequence.reverse() 

Faster(?) still is:

sequence.sort(reverse=True)


> I've tended to favor the "Schwarzian transform" (decorate-sort-undecorate)
> because of that.

That's what the key= argument does. cmp= is slow because the comparison
function is called for EVERY comparison. The key= function is only called
once per element.



-- 
Steven D'Aprano 


-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to