Hoe condenseer ik if/else in één regel in Python?

Mogelijk duplicaat:
Ternaire Python-operator
Een simpele if-then-statement op één regel zetten

Is er een manier om een if/else-statement naar één regel in Python te comprimeren?

Ik zie vaak allerlei snelkoppelingen en vermoed dat het hier ook van toepassing kan zijn.


Antwoord 1, autoriteit 100%

Een voorbeeld van Python’s manier om “ternaire” uitdrukkingen te doen:

i = 5 if a > 7 else 0

vertaalt naar

if a > 7:
   i = 5
else:
   i = 0

Dit is eigenlijk handig bij het gebruik van lijstbegrippen, of soms in return-statements, anders weet ik niet zeker of het zoveel helpt bij het maken van leesbare code.

Het leesbaarheidsprobleem is uitgebreid besproken in deze recente SO-vraag beter dan het gebruik van een if-else-statement in python.

Het bevat ook verschillende andere slimme(en enigszins verduisterde) manieren om dezelfde taak te volbrengen. Het is het lezen waard, alleen al op basis van die berichten.


Antwoord 2, autoriteit 22%

Python’s ifkan worden gebruikt als een ternaire operator:

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'

Antwoord 3, autoriteit 13%

Alleen voor gebruik als waarde:

x = 3 if a==2 else 0

of

return 3 if a==2 else 0

Antwoord 4, autoriteit 9%

Er is de voorwaardelijke uitdrukking:

a if cond else b

maar dit is een uitdrukking, geen verklaring.

In if-statements kan de if(of elifof else) op dezelfde regel worden geschreven als de hoofdtekst van het blok als het blok is er maar één zoals:

if something: somefunc()
else: otherfunc()

maar dit wordt afgeraden vanwege de opmaakstijl.

Other episodes