conditionals in lambdas?

Greg Ball gball at cfa.harvard.edu
Sat Nov 4 00:29:35 CET 2000


Michael P. Soulier wrote

> filecontents = filter(filterloaddata, filecontents)
> 
> def filterloaddata(string):
>     if string[:9] == '#LOADDATA':
>         return 1
>     else:
>         return 0

This is very easily done using a lambda.

filecontents = filter(lambda s: s[:9]=='#LOADDATA', filecontents)

You just have to know that the relational operators are expressions and
can appear anywhere (they are 1 or 0 for true or false...). This is how I
use filter() most of the time.

You can do much more complicated things to make up for lack of control
flow in expressions, using logical operators and indexing, but it's a case
of diminishing returns.

-Greg Ball











More information about the Python-list mailing list