有人可以向我解释这种语法吗?我已经通过文档/博客进行了搜索,但是却找不到使用布尔值作为数组切片的索引。我在此脚本convert_base.py
中找到了这种语法:
is_negative = num_as_string[0] == '-'
num_as_string[is_negative:]
我的猜测是False被强制转换为0而True被强制转换为1.是否有人知道或者可以指向任何文档?
>>> a = [1,2,3]
>>> a[True:]
[2,3]
>>> a[False:]
[1,2,3]
>>> a[:False]
[]
>>> a[:True]
[1]
>>> a[False:True]
[1]
>>> a[True:True]
[]
>>> a[False:False]
[]
>>> a[True:False]
[]
>>> a[False::True+1]
[1,3]
答案 0 :(得分:3)
除了MessagesInQueue
--------
0
4
0
0
0
25
0
17
0
6
0
0
和True
是int的子类(分别很容易被强制转换为1和0)之外,Python切片机制使用的False
方法返回{{1} }和__index__
:
1
通常可以通过定义0
方法对任意对象进行切片:
>>> True.__index__()
1
>>> False.__index__()
0
答案 1 :(得分:2)
True
和False
是bool
的实例,是int
的子类。 True
的整数值为1,False
的整数值为0。