1-line idiom to replace if blocks
Erik Max Francis
max at alcyone.com
Tue Jan 21 03:21:44 EST 2003
"Jonathan P." wrote:
> I hate code that takes up too many lines and
> have come up with the ff. idiom to replace
> many 4 line if statements:
>
> result=[value-if-false,value-if-true][condition]
>
> This idea could also be applied as a compact
> switch block replacement in certain cases.
This works if you don't need to worry about short-circuiting issues
(i.e., you don't even want the true/false cases _evaluated_ unless
you're the selected), and you're sure that the condition expression will
evaluate to either 0 or 1.
In 2.2.x and greater, you can use [x, y][bool(p)] to get this; prior to
2.2 you could use [x, y][operator.truth(p)]. Obviously, a tuple instead
of a list will work just as well: (x, y)[bool(p)].
--
Erik Max Francis / max at alcyone.com / http://www.alcyone.com/max/
__ San Jose, CA, USA / 37 20 N 121 53 W / &tSftDotIotE
/ \ The only source of knowledge is experience.
\__/ Albert Einstein
Sade Deluxe / http://www.sadedeluxe.com/
The ultimate Sade encyclopedia.
More information about the Python-list
mailing list