Python 2.0b1 List comprehensions are slow

Remco Gerlich scarblac-spamtrap at pino.selwerd.nl
Mon Sep 11 09:49:21 EDT 2000


Duncan Booth wrote in comp.lang.python:
> How would you convert this one to a lambda?
> 
> >>> def test(fn):
> ...     a, b, c = 1, 2, 3
> ...     list = [fn()[z] for z in ('a', 'b', 'c')]
> ...     print list
> ...
> >>> test(locals)
> [1, 2, 3]

Heh. That's dirty. I was thinking about

def test(fn):
   a,b,c = 1,2,3
   list = map(lambda x,fnres=fn(): fnres[x], 'abc')
   print list
   
But it doesn't work if fn() has a side effect. fn() is only called once, which
is usually good but may be wrong :-). 

The lambda could be replaced by "fn().get", that's somewhat less general,
but faster.

-- 
Remco Gerlich,  scarblac at pino.selwerd.nl
Signature server down. Manually insert witty comment here.



More information about the Python-list mailing list