Python 带括号和方括号的特殊条件语法
有没有关于以下Python条件语法的解释Python 带括号和方括号的特殊条件语法,python,Python,有没有关于以下Python条件语法的解释 >>> a = 10 >>> s = (0, 1)[a<10] >>> print s 0 >>> a = -10 >>> s = (0, 1)[a<10] >>> print s 1 >a=10 >>>s=(0,1)[a>>打印s 0 >>>a=-10 >>>s=(0,1)[a>>打印s 1. 它看起来像一个if语句。为什么这样做
>>> a = 10
>>> s = (0, 1)[a<10]
>>> print s
0
>>> a = -10
>>> s = (0, 1)[a<10]
>>> print s
1
>a=10
>>>s=(0,1)[a>>打印s
0
>>>a=-10
>>>s=(0,1)[a>>打印s
1.
它看起来像一个if
语句。为什么这样做呢?在Python中是的一个子类
换句话说,False
等于0,True
等于1:
>>> False == 0
True
>>> True == 1
True
因此,它们可以用作索引:
>>> ['No', 'Yes'][False] # ['No', 'Yes'][0]
'No'
>>> ['No', 'Yes'][True] # ['No', 'Yes'][1]
'Yes'
表达式a<10
根据a
的值生成True
或False
。因此(0,1)[a<10]
将相应地生成0
或1
。(0,1)
是一个2元素。您可以使用[0]
和[1]
访问其值,如下所示:
>>> (0, 1)[0]
0
>>> (0, 1)[1]
1
现在,在Python中,布尔值和实际上是int
的实例(因为bool
是int
的子类型):
True
和False
的int值是1
和0
:
>>> True == 1
True
>>> False == 0
True
因此,您可以实际使用它们访问2元素元组中的两个元素:
>>> (0, 1)[False]
0
>>> (0, 1)[True]
1
这就解释了为什么在那里指定一个返回布尔值的条件也会起作用
这也在(矿山重点)中提到:
布尔值是两个常量对象False
和True
。它们用于表示真值(尽管其他值也可以被视为False或True)。在数值上下文中(例如用作算术运算符的参数时),它们的行为分别类似于整数0和1。
如果<10其他0!相关,则任何正常人都会将其写成
s=1:
>>> True == 1
True
>>> False == 0
True
>>> (0, 1)[False]
0
>>> (0, 1)[True]
1