Kay Schluehr wrote: > Terry Reedy wrote: >> *If* bool(result_expression_i) == True for all i, (except maybe last >> default expression), which is true for some actual use cases, then the >> following expression evaluates to the result corresponding to the first >> 'true' condition (if there is one) or to the default: >> >> c0 and r0 or c1 and r1 or c2 and r2... or default. > > O.K. you win. One can complete this particular evaluation scheme by > introducing a little wrapper: > > def Id(val): > return lambda:val > > (c0 and Id(r0) or c1 and Id(r1) or c2 and Id(r2)... or Id(default))() > > This works for each sequence r0,r1,... without any restictions.
Or use a list as the "wrapper": (c0 and [r0] or c1 and [r1] or c2 and [r2] ... or [default])[0] Not that I'd actually encourage anyone to write this code. ;-) STeVe -- http://mail.python.org/mailman/listinfo/python-list