J'ai récemment découvert une alternative à la construction standard de " expression_on_true if predicate else expression_on_false ", que je n'ai pas vue dans les répertoires:(expression_on_false, expression_on_true)[predicate]

Comment ça fonctionne
- Entre parenthèses, un tuple de deux éléments est déclaré.
- Entre crochets, la valeur du prédicat est calculée.
- Un tuple est accessible à l'index 1 (si la valeur du prédicat est True) ou 0 (si la valeur du prédicat est False)
Regardons un exemple
Supposons que nous ayons un , et que nous devons imprimer «positif» si le nombre n'est pas inférieur à zéro, ou «nagatif» si le nombre est inférieur à zéro.
>>> a = 101
>>> ("negative", "positive")[a >= 0]
'positive'
>>> a = -42
>>> ("negative", "positive")[a >= 0]
'negative'
>>> a = 0
>>> ("negative", "positive")[a >= 0]
'positive'
Dans le premier cas, 101> = 0, le prédicat renvoie donc True. Lors de l'indexation, True passe à 1, donc l'appel va à l'élément d'index 1. Dans le deuxième cas, la même chose: le prédicat est False, l'appel va à l'élément d'index 0.Construction ("négatif", "positif") [a> = 0] au moins et pas beaucoup plus court que "positif" si a> = 0 sinon "positif" , mais je trouve toujours cette fonctionnalité intéressanteRemarque
(merci à Dasdy )Si au lieu de constantes nous substituons des expressions dans le tuple, dont une seule doit être exécutée, alors cette construction perd son sens.