如何做到这一点:使用backet在Python中实现if语句



我看到了Python的这种用法,它非常干净,但我并不真正理解这种用法,也无法搜索到任何有用的解释。

  1. 这是正常的方法:

    if a < 0:
        b = 2 * a
    else:
        b = 3 * a
    
  2. 这实现了相同的目的:

    b = a * (3,2) [a<0]
    

有人能告诉我官方文件在哪里说明了上述内容吗

b = a * (3,2) [a<0]

a<0是返回true or false的条件,即1/0

(3,2)是以32为元素的元组

如果条件为true,则语句将在索引1处索引元素,否则它将索引到元素0

In [33]: (3,2)[0]
Out[33]: 3
In [34]: (3,2)[1]
Out[34]: 2

该条件导致01,因为在python中True means 1False means 0

In [35]: True == 1
Out[35]: True
In [36]: False == 0
Out[36]: True

第二个选项仅用于打高尔夫球。文档确实没有对这种语法说太多,但Python的Zen确实指出"简单胜于复杂",并且"可读性很重要"。您应该使用第一个选项。

您也可以使用Python的三元运算符:

b = a*(2 if a < 0 else 3)

最新更新