用布尔值作为索引进行数组切片

时间:2017-04-18 21:19:45

标签: python arrays python-3.x boolean slice

有人可以向我解释这种语法吗?我已经通过文档/博客进行了搜索,但是却找不到使用布尔值作为数组切片的索引。我在此脚本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]

2 个答案:

答案 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)

TrueFalsebool的实例,是int的子类。 True的整数值为1,False的整数值为0。