在蟒蛇
问题描述:
返回数值的符号奇怪的语法那么的代码下面的代码片段返回x的符号:在蟒蛇
x = -15 (1, -1)[x < 0]
我很难理解为什么这句法的作品。特别是,你怎么可以写出一个元组后面的布尔值列表,并从中得到元组中的一个或另一个值......有人请解释这个语法!
答
这是一种基于布尔值做索引的方法。如下面看到的那样,True
和False
以整数的情况下分别计算为1
和0
:
>>> int(True)
1
>>> int(False)
0
此外,(1, -1)
是一个元组,可被索引的序列对象:
>>> (314159,271828)[0]
314159
>>> (314159,271828)[1]
271828
结合这两个事实,你应该能够看出:
(1, -1)[x < 0]
会给y ou 1
当x < 0
为假,-1
为真。这基本上是x
的标志。
+0
只需要4个月的时间来回答这个显而易见的基本问题;) – DeepSpace
没关系---我现在明白了。我们使用逻辑语句的结果将元组索引到元组中。 – ireinventcodebicycles