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

Python中用列表索引判断数值符号的特殊写法原理是什么?

Python列表布尔索引代码原理说明

代码运行逻辑

这段代码的核心是利用了Python原生的类型特性:

  • Python中bool(布尔)类型是int(整数)类型的子类,True对应的整数值为1,False对应的整数值为0,布尔值可以直接作为整数使用在索引、运算等场景中。
  • 代码中[1, -1]是直接定义的两元素字面量列表,两个元素对应的索引分别为0、1。
  • 执行sign = [1,-1][x < 0]时,会优先计算索引位的表达式x < 0:
    • 当x为负数时,x < 0返回True(等价于1),因此会取列表索引为1的元素,即-1
    • 当x为非负数时,x < 0返回False(等价于0),因此会取列表索引为0的元素,即1

技巧属性说明

  • 这个用法没有Python官方定义的正式名称,Python社区一般称这类用法为布尔值索引取值,注意和Numpy、Pandas等数据处理库中的布尔矩阵索引做区分,这里仅用到了原生Python的基础特性。
  • 它不属于列表推导:列表推导是带有for/if关键字、通过迭代生成新列表的特殊语法,该用法本质就是普通的列表索引操作,只是利用了布尔值的整数特性的灵活编码技巧。
  • 实际开发中更推荐可读性更高的三元表达式实现同等效果:sign = -1 if x < 0 else 1,避免过度使用这类技巧导致代码可读性下降。

内容的提问来源于stack exchange,提问作者Shubham Nanche

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:24:03