0

我看到了Python的这种用法,很干净,但是我不是很了解这种用法​​,也无法搜索任何有用的解释。

  1. 这是正常的方法:

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

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

有人可以告诉我 官方文档在哪里对上述内容进行了说明吗?

4

2 回答 2

3

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

a<0是一个返回的条件,true or false1/0

(3,2)是一个带有32作为元素的元组

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

喜欢

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

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

条件导致0or1因为在 pythonTrue means 1False means 0

In [35]: True == 1
Out[35]: True

In [36]: False == 0
Out[36]: True
于 2013-02-13T09:48:44.027 回答
2

仅将第二个选项用于打高尔夫球的目的。文档对这种语法确实没有多说,但Python 之禅确实声明“简单胜于复杂”,并且“可读性很重要”。您应该使用第一个选项。

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

b = a*(2 if a < 0 else 3)
于 2013-02-13T09:48:31.803 回答