Boolean function on variable-length lists

Jussi Piitulainen jpiitula at ling.helsinki.fi
Wed Sep 12 09:37:27 EDT 2012


Libra writes:
> On Wednesday, September 12, 2012 3:02:44 PM UTC+2, Jussi Piitulainen wrote:
>  
> > So you would associate each constraint with an index. You could
> > maintain a list of constraints and apply it to the values as
> > follows:
> 
> Yes, even though there could be more constraints for each value in
> the list (at least 1 constraint for each value)

Either you write more complex constraint functions, or you use more
complex data structures to hold them.

> > >>> cs = [ lambda x : x >= 1, lambda x : x <= 3, lambda x : x == 2,
> > 
> > ...        lambda x : x >= 3 ]
> > 
> > >>> { f(x) for f, x in zip(cs, [1,2,3,4]) }
> 
> Just to understand, with f(x) you are defining a function f with
> argument x, right? I didn't know it was possible to define functions
> in this way. Is this a case of anonymous function?

The value of each lambda expression is a function. f(x) is a function
call, evaluated for each pair (f, x) from the list of pairs that the
zip returns.

{ ... for ... in ... } creates a set of the values, no duplicates.
[ ... for ... in ... ] creates a list of the values.

> > {False, True}
> 
> Actually, I don't understand the output. Why it is both False and
> True?

It's a set containing False and True. The False comes from the f(x)
where f = lambda x : x == 2, and x is 3. There is only one True
because I requested a set of the values.



More information about the Python-list mailing list