使用列表理解進行條件表示式評估
Python 允許你破解列表推導以評估條件表示式。
例如,
[value_false, value_true][<conditional-test>]
例:
>> n = 16
>> print [10, 20][n <= 15]
10
這裡 n<=15
返回 False
(在 Python 中等於 0)。那麼 Python 正在評估的是:
[10, 20][n <= 15]
==> [10, 20][False]
==> [10, 20][0] #False==0, True==1 (Check Boolean Equivalencies in Python)
==> 10
Python 2.x <= 2.7
內建的 __cmp__
方法返回了 3 個可能的值:0,1,-1,其中 cmp(x, y)返回 0:如果兩個 objecs 相同 1:x> y -1:x <y
這可以與列表推導一起使用以返回列表的第一個(即索引 0),第二個(即索引 1)和最後一個(即索引 -1)元素。給我們這種型別的條件:
[value_equals, value_greater, value_less][<conditional-test>]
最後,在上面的所有示例中,Python 在選擇一個分支之前評估兩個分支。僅評估所選分支:
[lambda: value_false, lambda: value_true][<test>]()
在末尾新增 ()
確保 lambda 函式最後只被呼叫/計算。因此,我們只評估所選分支。
例:
count = [lambda:0, lambda:N+1][count==N]()