PEP 308: Obfuscated Nested Ternaries (INACAIS)

Peter Hansen peter at engcorp.com
Thu Feb 20 11:04:44 EST 2003


Duncan Booth wrote:
> 
> Who needs ternaries?
> 
> def silly(x, y, t, l, b, r, tl, tr, bl, br):
>     actions = {
>         ( 1, 1): lambda: (tl, br,  b, br,  r, br),
>         ( 1, 0): lambda: ( l,  r,  t,  r,  b,  r),
>         ( 1,-1): lambda: (bl, tr,  t, tr,  r, tr),
>         ( 0, 1): lambda: ( t,  b,  l,  b,  r,  b),
>         ( 0, 0): lambda: (tl, tr, br, bl, tl),
>         ( 0,-1): lambda: ( b,  t,  l,  t,  r,  t),
>         (-1, 1): lambda: (tr, bl,  b, bl,  l, bl),
>         (-1, 0): lambda: ( r,  l,  t,  l,  b,  l),
>         (-1,-1): lambda: (br, tl,  t, tl,  l, tl)
>         }
> 
>     seq = actions[cmp(x,0), cmp(y,0)]()
>     return seq

Why is the lambda required?  Aren't you just retrieving
a tuple?

(But your point is excellent.  Didn't the timbot once generate
something words about every problem in Python being solvable 
with dicts?)

-Peter




More information about the Python-list mailing list