帶有布爾值的列表索引工作正常。 雖然索引應該是一個整數。Python Bool和int比較和帶有布爾值的列表索引
以下是我的嘗試在控制檯:
>>> 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'>
當我試圖l['0']
它打印出的整型預期指數,這是明顯的錯誤。 然後,即使'True'
和'False'
的類型爲Bool
,列表上的索引工作正常,並自動將其轉換爲int類型並執行操作。
請解釋一下內部發生了什麼。 我是第一次發佈問題,所以請原諒我的任何錯誤。
+1,我學到了一些東西。不知道'bool'是'int'的一個子類。 – nneonneo
我剛剛通過這篇文章[鏈接] http://stackoverflow.com/questions/3174392/is-it-pythonic-to-use-bools-as-ints/3175293#3175293) 非常感謝。 – Somesh