我想爲下面的分支,如果任何一個更Python的方式:是否有更優雅的pythonic方式表達下列條件表達式?
if a<b:
a.append('value')
elif a==b:
b.append('value')
else:
do nothing
是否有任何三元運算符?
我想爲下面的分支,如果任何一個更Python的方式:是否有更優雅的pythonic方式表達下列條件表達式?
if a<b:
a.append('value')
elif a==b:
b.append('value')
else:
do nothing
是否有任何三元運算符?
使用嵌套三元運算符。
func1() if a<b else func2() if a==b else func3()
爲您具體的例子:
a.append('value') if a<b else b.append('value') if a==b else None
現在你讓我在高爾夫球的心情'[func2,func3,func1] [cmp(a,b)]()' – 2013-02-13 10:16:21
你可以做這樣的事情:
result = a<b and first_action or a==b and second_action or third_action
其中* _action符合 「做某事」 的代碼在你的問題
雖然'和/或'欺騙它的作品,它只是使其更容易閱讀imo。 – 2013-02-13 10:15:57
@AttilaO。我認爲欺騙是一個主要的形容詞。短切AND邏輯在大多數語言中都很常見......而我是一名粉絲:) – 2013-02-13 10:18:47
您的
if a<b:
a.append('value')
elif a==b:
b.append('value')
else:
do nothing
不能被重寫,它是可以的,因爲它是。也許只是刪除最後兩行(否則/什麼也不做)。
我在這裏看到的唯一的參數化是:
if a <= b:
(a,b)[a==b].append('value')
但是這只是醜陋。
爲了您確切情況下,這些人會工作:
[b, a, []][cmp(x, y)].append('value')
[b, a, []][cmp(x, y)] += ['value']
請不要這樣做。您目前的代碼很容易閱讀。
我開始某種高爾夫比賽嗎? – Volatility 2013-02-13 10:23:30
@Volatility:我希望如此 – Blender 2013-02-13 10:23:57
顯然,你可以離開其他情況下關閉
if a<b:
a.append('value')
elif a==b:
b.append('value')
這是唯一的_real_改進。 – georg 2013-02-13 12:43:19
_Pythoniceans_ ** **愛字_pythonic_,即使它意味着什麼。 – 2013-02-13 10:12:38
使用6行有什麼問題? – 2013-02-13 10:13:08
這可能是最好的方法來做到這一點,如果你的三個'做某事'是非常不同的。如果他們可以參數化,分支可以寫得更簡潔。告訴我們更多關於你的'做某事'的信息。 – eumiro 2013-02-13 10:14:13