Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带括号和方括号的特殊条件语法_Python - Fatal编程技术网

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语句。为什么这样做

有没有关于以下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
语句。为什么这样做呢?

在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