2017-04-10 145 views
2

返回數值的符號奇怪的語法那麼的代碼下面的代碼片段返回x的符號:在蟒蛇

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

我很難理解爲什麼這句法的作品。特別是,你怎麼可以寫出一個元組後面的布爾值列表,並從中得到元組中的一個或另一個值......有人請解釋這個語法!

+0

沒關係---我現在明白了。我們使用邏輯語句的結果將元組索引到元組中。 – ireinventcodebicycles

回答

3

這是一種基於布爾值做索引的方法。如下面看到的那樣,TrueFalse以整數的情況下分別計算爲10

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

此外,(1, -1)是一個元組,可被索引的序列對象:

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

結合這兩個事實,你應該能夠看出:

(1, -1)[x < 0] 

會給y ou 1x < 0爲假,-1爲真。這基本上是x的標誌。

+0

只需要4個月的時間來回答這個顯而易見的基本問題;) – DeepSpace