2011-12-14 55 views
16

是否有一個Python版本下列if的 - 在C else聲明++或類似的聲明是這樣的:Python中陳述短 '的if-else'

int t = 0; 
    int m = t==0?100:5; 
+0

可能重複[python? (條件/三元)運算符](http://stackoverflow.com/questions/3091316/python-conditional-ternary-operator-for-assignments) – 2011-12-14 11:54:52

+0

[Python三元運算符](http:// stackoverflow。 com/questions/394809/python-ternary-operator) – kay 2012-07-23 22:59:45

回答

38
m = 100 if t == 0 else 5 # Requires Python version >= 2.5 
m = (5, 100)[t == 0]  # Or [5, 7][t == 0] 

上述兩個線將導致同樣的事情。

第一行使用Python版本的「三元運算符」,自2.5版開始可用,儘管Python文檔將其稱爲Conditional Expressions

第二行是一個小巧的黑客工具在許多提供內嵌的功能(所有重要的)方式等同於?:在許多其他語言中(如CC++)。文檔的Python - 5.11. Conditional Expressions

7
t = 0 
if t == 0: 
    m = 100 
else: 
    m = 5 

美麗的比醜好。
顯式優於隱式。
簡單勝過複雜。

PEP 20

或者,如果你真的,真的必須(在Python作品> = 2.5):

t = 0 
m = 100 if t == 0 else 5 
+1

-1。三元運算符*遠不如醜 - 比如對於這樣的簡單操作,非常明確,並且*方法*更簡單。教條很醜。 – naught101 2015-01-20 02:40:53

13

你指的是結構被稱爲ternary operator。 Python有一個版本的它(因爲版本2.5),如下所示:

x if a > b else y 
3


還有:

m = t==0 and 100 or 5 

因爲0是一個falsy值,我們可以這樣寫:

m = t and 5 or 100 

這相當於第一個。