Python Language Évaluation des expressions conditionnelles à l'aide de listes de compréhension


Exemple

Python vous permet de pirater les listes de compréhension pour évaluer les expressions conditionnelles.

Par exemple,

[value_false, value_true][<conditional-test>]

Exemple:

>> n = 16
>> print [10, 20][n <= 15]
10

Ici n<=15 renvoie False (ce qui équivaut à 0 en Python). Donc, ce que Python évalue est:

[10, 20][n <= 15]
==> [10, 20][False] 
==> [10, 20][0]     #False==0, True==1 (Check Boolean Equivalencies in Python)
==> 10
Python 2.x 2.7

La méthode intégrée __cmp__ renvoyé 3 valeurs possibles: 0, 1, -1, où cmp (x, y) a renvoyé 0: si les deux objectifs étaient identiques 1: x> y -1: x <y

Cela pourrait être utilisé avec des listes compréhensibles pour renvoyer le premier élément (c'est-à-dire index 0), le deuxième élément (ie index 1) et le dernier élément (ie index -1) de la liste. Nous donner un conditionnel de ce type:

[value_equals, value_greater, value_less][<conditional-test>]

Enfin, dans tous les exemples ci-dessus, Python évalue les deux branches avant d'en choisir une. Pour évaluer uniquement la branche choisie:

[lambda: value_false, lambda: value_true][<test>]()

où l'ajout de () à la fin garantit que les fonctions lambda ne sont appelées / évaluées qu'à la fin. Ainsi, nous n'évaluons que la branche choisie.

Exemple:

count = [lambda:0, lambda:N+1][count==N]()