Vote on PEP 308: Ternary Operator

Beni Cherniavsky cben at
Mon Mar 3 09:49:38 CET 2003

On 2003-03-02, Anders Hammarquist wrote:

> Hmm, there was the Q option (fill-in). So if nothing else, you can always
> come up with 3 randomly horrendous syntaxes, and then reject those three.
> Of course, you also have to just how horrendous you syntax is...
Hey, that's easy <wink>:

x_\lambda =
x & \text{if $\lambda$ is an eigenvalue;}\\
-x & \text{if $-\lambda$ is an eigenvalue;}\\
0 & \text{otherwise.}

As long as you keep the TeX flavour, it's still unacceptably
unpythonic.  E.g.:

x[l] = cases { x if eigenvalue(l),
               -x if eigenvalue(-1),
               0 otherwise }

Oops, wait, that's not that bad :-).  The ``cases`` keyword can be
omitted and the braces should perhaps become parentheses...

To make it horrendously unaceptable (but readable, after all I'm
mimicing math notation), let's do ascii art <;->:

x[l] = / x  if eigenvalue(l),
       |  -x if eigenvalue(-1),
       \ 0  otherwise

(there is variable number of ``|`` lines; you can't go lower than two
options, since then the construct is redudant).

Beni Cherniavsky <cben at>

True elegance has negative overhead so it isn't subject to tradeoffs.

More information about the Python-list mailing list