Lập chỉ mục trên danh sách với các giá trị boolean hoạt động tốt. Mặc dù chỉ mục phải là số nguyên.Python Bool và so sánh int và lập chỉ mục trong danh sách với các giá trị boolean
Sau đây là những gì tôi đã cố gắng trong giao diện điều khiển:
>>> 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'>
Khi tôi cố gắng l['0']
nó in lỗi mà kiểu int dự kiến trong chỉ số và đó là hiển nhiên. Sau đó, ngay cả loại 'True'
và 'False'
là Bool
, việc lập chỉ mục trên danh sách hoạt động tốt và tự động chuyển đổi thành loại int và thực hiện thao tác.
Vui lòng giải thích những gì đang diễn ra trong nội bộ. Tôi đăng câu hỏi lần đầu tiên, vì vậy hãy tha thứ cho tôi vì bất kỳ sai lầm nào.
+1, tôi đã học được điều gì đó. Không biết 'bool' là một lớp con của' int'. – nneonneo
Tôi vừa xem qua bài đăng này quá [link] http://stackoverflow.com/questions/3174392/is-it-pythonic-to-use-bools-as-ints/3175293#3175293) Cảm ơn rất nhiều. – Somesh