Ce qui se passe ici est un peu déroutant, car [1,2,3][True]
a deux ensembles de []
s qui sont interprétés de différentes façons.
Ce qui se passe est un peu plus clair si nous divisons le code sur quelques lignes.
Le premier ensemble de []
s construit un objet liste. Assignons cet objet le nom a
:
>>> [1,2,3]
[1, 2, 3]
>>> a = [1,2,3]
>>>
Le deuxième ensemble de []
spécifier un index dans cette liste. Vous souhaitez généralement voir le code comme ceci:
>>> a[0]
1
>>> a[1]
2
>>>
Mais il est tout aussi valide pour utiliser l'objet liste directement, sans jamais lui donner un nom:
>>> [1,2,3][0]
1
>>> [1,2,3][1]
2
Enfin, le fait que True
et False
sont utilisables en tant qu'index parce qu'ils sont traités comme des entiers. De l'data model docs:
Il existe trois types d'entiers:
entiers simples ....
entiers longs .....
booléens
Ceux-ci représentent la vérité des valeurs Faux et vrai. Les deux objets représentant les valeurs False et True sont les seuls objets booléens . Le type booléen est un sous-type d'entiers simples et les valeurs booléennes se comportent comme les valeurs 0 et 1, respectivement, dans presque tous les contextes , l'exception étant que lors de la conversion en chaîne, les chaînes "False" ou "True" sont retournés, respectivement.
Ainsi, [1,2,3][True]
est équivalent à [1,2,3][1]
Excellente explication, merci. – Pyderman