我看到了Python的这种用法,它非常干净,但我并不真正理解这种用法,也无法搜索到任何有用的解释。
-
这是正常的方法:
if a < 0: b = 2 * a else: b = 3 * a
-
这实现了相同的目的:
b = a * (3,2) [a<0]
有人能告诉我官方文件在哪里说明了上述内容吗
b = a * (3,2) [a<0]
a<0
是返回true or false
的条件,即1/0
(3,2)
是以3
和2
为元素的元组
如果条件为true
,则语句将在索引1
处索引元素,否则它将索引到元素0
像
In [33]: (3,2)[0]
Out[33]: 3
In [34]: (3,2)[1]
Out[34]: 2
该条件导致0
或1
,因为在python中True means 1
和False 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)