1. 程式人生 > >Python的三元表示式

Python的三元表示式

其他語言的三元表示式

result = 判定條件? 為真時的結果:為假時的結果

# 示例:
result = 5>3? 1:0             # 條件為真是result賦值為1,條件為假時賦值為0

 Python中的三元表示式

result = 為真時的結果 if 判斷條件 else 為假時的結果

# 示例:
>>> x = 1
>>> y = 2
>>> result = x if x > y else y # 如果條件成立,將x的值賦給result
>>> result
2

上面的三元表示式等價於

>>> x = 1
>>> y = 2
>>> if x > y:
...     result = x
... else:
...     result = y
...
>>> result
2
>>>

三元表示式的幾個常見應用

1. 結合函式結合使用

# 示例一: 求兩個引數的最大值
>>> def max(x, y): 
...     return x if x > y else y                           # 取兩個值的比較大的
...
>>> max(1, 3)
3
>>>

# 示例二: 斐波那契數列
>>> def fib(n):
...     return n if n<2 else fib(n-1)+fib(n-2)
...
>>> [fib(n) for n in range(10)]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
>>>

2. 結合匿名函式使用

>>> map(lambda x,y:x-y if x> y else y-x, [2,1,3],[4,3,1])  # 兩個列表相減並保證不為負
[2, 2, 2]
>>>

3. 結合列表推導使用

# 示例一: 將0-9的10個數,奇數用0表示,偶數用1表示
>>> [0 if i % 2 == 0 else 1 for i in range(10)]             
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1]

# 示例二: 常規寫法
>>> x = 100
>>> L = []
>>> L.append(1 if x>0 else 0)
>>> L
[1]
>>>

4. 在處理Json格式中的一個典型應用

使用三元表示式的寫法

一般的寫法,可以看見,使用三元表示式的寫法要簡潔的多!

5. 三元表示式的一個變種

>>> cond = True
>>> name = ["Cat", "Tom"][bool(cond)]
>>> name
'Tom'
>>> cond = ""
>>> name = ["Cat", "Tom"][bool(cond)]
>>> name
'Cat'
>>>