L'indicizzazione su elenco con valori booleani funziona correttamente. Anche se l'indice dovrebbe essere un numero intero.Python Bool e confronto e indicizzazione int sull'elenco con valori booleani
seguito è quello che ho provato in consolle:
>>> l = [1,2,3,4,5,6]
>>>
>>> l[False]
1
>>> l[True]
2
>>> l[False + True]
2
>>> l[False + 2*True]
3
>>>
>>> l['0']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str
>>> type(True)
<type 'bool'>
Quando provai l['0']
è stampato errore int tipo previsto in indici e che è evidente. Quindi, anche il tipo di 'True'
e 'False'
è Bool
, l'indicizzazione nell'elenco funziona correttamente e la converte automaticamente in tipo int ed esegue l'operazione.
Si prega di spiegare cosa sta succedendo internamente. Sto postando la domanda per la prima volta, quindi per favore perdonami per qualsiasi errore.
+1, ho imparato qualcosa. Non sapevo che 'bool' fosse una sottoclasse di' int'. – nneonneo
Anch'io ho appena letto questo post [collegamento] http://stackoverflow.com/questions/3174392/is-it-pythonic-to-use-bools-as-ints/3175293#3175293) Grazie mille. – Somesh