【问题标题】:strange syntax for returning sign of number in python在python中返回数字符号的奇怪语法
【发布时间】:2017-04-10 02:15:42
【问题描述】:

所以下面的 sn-p 代码返回 x 的符号:

x = -15  
(1, -1)[x < 0]

我很难理解为什么这种语法有效。特别是,您为什么可以在布尔列表之后编写一个元组并从中获取元组中的一个或另一个值....请解释一下这个语法!

【问题讨论】:

  • 没关系---我现在明白了。我们正在使用逻辑语句的结果对元组进行索引。

标签: python syntax boolean tuples list-comprehension


【解决方案1】:

这是一种基于布尔值进行索引的方法。如下所示,TrueFalse 在整数上下文中分别计算为 10

>>> int(True)
1
>>> int(False)
0

另外,(1, -1) 是一个元组,一个可以被索引的序列对象:

>>> (314159,271828)[0]
314159
>>> (314159,271828)[1]
271828

结合这两个事实,您应该能够辨别出:

(1, -1)[x < 0]

x &lt; 0 为假时会给你1,当它为真时-1。那基本上是x的标志。

【讨论】:

  • 有人回答这个看似基本的问题只用了 4 个月 ;)
  • @DeepSpace:嗯,只花了几分钟就找到了答案,但我为如何最好地呈现而苦恼了好一阵子。更令人担忧的是,您的评论花了 7 个月才想到“有趣”的事情。引用“有趣”是因为,正如我妻子经常指出的那样,我很少:-)
猜你喜欢
  • 1970-01-01
  • 2013-12-29
  • 1970-01-01
  • 2019-07-05
  • 2017-07-04
  • 2018-03-11
  • 2019-07-27
  • 2012-08-07
  • 1970-01-01
相关资源
最近更新 更多