2009-11-06 28 views

回答

157
a = '123' if b else '456' 
+10

這個三元運算符是在Python 2.5中引入的。 – 2009-11-06 09:19:39

+0

謝謝!正是我所期待的。無法在python文檔網站上找到它。 – huy 2009-11-06 09:21:12

+0

爲了將來的參考,以下是條件表達式的Python文檔:http://docs.python.org/reference/expressions.html#boolean-operations – 2009-11-06 09:25:41

9

我神祕的版本...

a = ['123', '456'][b == True] 
+1

這是單行if語句之前的老方法之一,對吧?有點像你如何可以用邏輯來做到這一點:'真和「富」或「酒吧」 ' – jdi 2012-05-02 22:49:11

14

雖然a = 'foo' if True else 'bar'做三元的更現代的方式if語句(蟒蛇2.5+),1對1當量您的版本可能是:

a = (b == True and "123" or "456") 

...這蟒蛇應縮短爲:

a = b is True and "123" or "456" 

...或者如果你只是婉噸至試驗B的值的真實性一般...

a = b and "123" or "456" 

? :簡直可以被交換出去的and or

+2

這是什麼樣的黑魔法?謝謝 – Inversus 2014-04-29 14:33:44

+1

我應該注意到,如果「123」值實際上是一個空字符串或者計算結果爲錯誤值,那麼這裏的and..or方法可能會適得其反。 if..else更安全一些。 – jdi 2014-04-29 19:56:28

+0

整潔!謝謝你。 – 2017-02-20 01:46:02