2014-09-20 28 views
4

如何使if else語句成爲下面的一個班輪?在python中使if if語句成爲一個班輪

uly = '50' 

if '-' in uly: 
    uly = uly.replace('-','S') 
else: 
    uly = 'N'+uly 

print uly 

我的審判:

uly = [uly=uly.replace('-','S') if '-' in uly else uly = 'N'+uly] 
print uly 
+1

爲什麼你一定需要一個班輪?大多數人會發現這更易讀。 – George 2014-09-20 14:49:28

+0

只是爲了縮短我的代碼,如果可能的話。 – Taylor 2014-09-20 14:50:19

+3

您應該優化可讀性,而不是短代碼。關於你如何做這件事絕對沒有錯,我個人強烈希望顯式的if-else外觀到單行版本。 – 2014-09-20 14:51:29

回答

9

下面將做到這一點:

uly = uly.replace('-', 'S') if '-' in uly else 'N' + uly 

這裏使用了所謂的conditional expression(類似,但它是一個表達式,而不是一個if聲明一份聲明)。

你現在正在嘗試列表理解,這是不適合的,因爲沒有涉及列表。

所有這一切,我會敦促你重新思考最短代碼的優化。作爲一般規則,可讀性應該勝過緊湊性。

0

試試這個

uly = '-' in uly and uly.replace('-','S') or 'N'+uly 
+1

我對這個習慣用法很滿意,經常在條件表達式可用前的幾天中使用它,儘管它有一個缺點,如果'and'後面的表達式評估爲false,它可能不會做你想要的。所以我現在傾向於使用條件表達式,當時我認爲使用一行代碼是有必要的。 OTOH,我同意可讀性勝過保存幾行代碼,並且明確的if-else結構往往比單線程版本更具可讀性。 – 2014-09-20 17:58:26