[Tutor] map, filter and lambda functions

Hans Nowak hnowak@cuci.nl
Thu, 23 Aug 2001 10:58:07 +0200


>===== Original Message From "Kerim Borchaev" <warkid@storm.ru> =====
>Thursday, August 23, 2001, 9:23:50 AM, you wrote:
>
>RR> checklist = string.split(filetext, '\n')
>RR> checklist = filter(None, checklist)
>RR> checklist = map(string.strip, checklist)
>RR> checklist = map(string.upper, checklist)
>
>RR> If checklist is rather long, the last two may be written mor efficiently
>RR> as:
>
>RR> checklist = map(lambda x:string.upper(string.strip(x)), checklist)
>
>About efficiency - running the script below i get this:
>
>2.01
>1.32
>2.01
>1.32
>
>no luck for lambda...

On my box, these two are faster:

 print "trial 5:",
 def popo(x):
     return x.strip().upper()
 start = time.clock()
 for i in range(num_iter):
     checklist=l
     checklist = map(popo, checklist)
 stend = time.clock()
 print "%.2f"%(stend-start)

 print "trial 6:",
 start = time.clock()
 for i in range(num_iter):
     checklist=l
     checklist = [x.strip().upper() for x in checklist]
 stend = time.clock()
 print "%.2f"%(stend-start)

I'm on an overloaded NT box right now, and the results vary horribly for each 
run, but 5 and 6 are consistently faster than the rest.

Mzzl,

--Hans Nowak