Python中此代码运行原理:为何a[True]输出6、a[False]输出5?
Python中布尔值作为列表索引的运行原理解析
嘿,这个问题问得相当到位!咱们来把背后的逻辑掰扯清楚~
首先得记住一个Python的底层细节:布尔类型bool其实是整数类型int的子类。换句话说,True本质上就等价于整数1,False等价于整数0。你可以自己在Python交互环境里验证这一点:
print(True == 1) # 输出 True print(False == 0) # 输出 True print(issubclass(bool, int)) # 输出 True
回到你给出的代码:
a = [5,6,7,8,9] print(a[True]) # prints 6 print(a[False]) # prints 5
Python的列表是从0开始索引的:
- 当你写
a[False]时,Python会自动把布尔值False转换成整数0,所以实际取的是列表的第0个元素,也就是5; - 当你写
a[True]时,布尔值True被转换成整数1,取的是列表的第1个元素,也就是6。
不过这里得提一句:虽然这种写法在语法上是合法的,但在实际开发中绝对不推荐这么用!用布尔值当索引会严重降低代码的可读性,别人看代码的时候得反应半天才能明白你的意图,直接写数字索引a[0]、a[1]才是更清晰的做法。
内容的提问来源于stack exchange,提问作者Navi
相关产品推荐
相关产品推荐

