python - 带圆括号和方括号的特殊条件语法

标签 python

<分区>

有没有关于以下Python条件语法的解释?

>>> a = 10
>>> s = (0, 1)[a<10]
>>> print s
0
>>> a = -10
>>> s = (0, 1)[a<10]
>>> print s
1

它似乎像 if 语句一样工作。为什么会这样?

最佳答案

在 Python 中, bool int 的子类.

>>> issubclass(bool, int)
True

换句话说,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产量 TrueFalse基于 a 的值.所以(0, 1)[a < 10]将产生 01相应地。

关于python - 带圆括号和方括号的特殊条件语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31783967/

相关文章:

python - 从 Pandas 的数据框中删除无限值?

python - 如何使用python将表单数据插入MYSQL

python - 如何使用 pyqt4 将不同的背景颜色应用于树小部件中父文本的每一行

python - Pylons - 处理 GET 和 POST 请求

python - sqlalchemy:无需密码即可连接到 MySQL

python - 在 IPython Notebook 中绘制多个子图

python - 如何从 XML xpath 搜索生成的列表中的子字符串中去除字符?

python - Spark 引发 OutOfMemoryError

python - PyCharm 使用 Anaconda python.exe 和模块失败 - ModuleNotFoundError : No module named 'PySide'

python - 如何在 pygame 中渲染/blit 文本以获得良好的性能