You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:23:27