请问这种Python算术式精简条件语法的官方名称是什么?
用列表索引实现条件判断的Python语法解释
这段代码是用来把N位无符号整数转换成对应补码真值的,其中你觉得陌生的部分,是利用了Python里布尔值和整数的等价特性实现的精简条件判断。
语法原理
Python中True的数值等价于1,False等价于0。所以代码里的(0,-2**N)[x >= 2**(N-1)]可以拆解成:
- 当判断条件
x >= 2**(N-1)成立(结果为True),就取列表的第1个元素-2**N - 当条件不成立(结果为
False),就取列表的第0个元素0
把这段逻辑展开成常规的if/else写法,就是:
def core(x,N): x = int(x) if x >= 2**(N-1): return x - 2**N else: return x
代码功能说明
对于N位无符号数来说,最高位为1的数对应补码的负数。比如N=8时,2(8-1)=128,当x>=128时,减去28=256,就能得到对应的负真值(比如x=128时,128-256=-128,正是8位补码中-128的表示);x<128时直接返回原数,对应补码的正数。
内容的提问来源于stack exchange,提问作者abdullam
相关产品推荐
相关产品推荐

