【发布时间】:2016-11-02 05:18:58
【问题描述】:
由于True 和False 是int 的实例,以下在Python 中有效:
>>> l = [0, 1, 2]
>>> l[False]
0
>>> l[True]
1
我明白为什么会这样。但是,我发现这种行为有点出乎意料,并且可能导致难以调试的错误。它肯定咬了我好几次。
谁能想到用True 或False 合法使用索引列表?
【问题讨论】:
-
对代码高尔夫有用:print(('ko', 'ok')[a
-
它是有效的python代码,是否“合法”使用主要是见仁见智。
-
请注意,在 numpy
ndarray中,它有不同的含义:np.array([1, 2, 3])[array([True, False, True])]→array([1, 3])。