如何使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
如何使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
下面將做到這一點:
uly = uly.replace('-', 'S') if '-' in uly else 'N' + uly
這裏使用了所謂的conditional expression(類似,但它是一個表達式,而不是一個if
聲明一份聲明)。
你現在正在嘗試列表理解,這是不適合的,因爲沒有涉及列表。
所有這一切,我會敦促你重新思考最短代碼的優化。作爲一般規則,可讀性應該勝過緊湊性。
試試這個
uly = '-' in uly and uly.replace('-','S') or 'N'+uly
我對這個習慣用法很滿意,經常在條件表達式可用前的幾天中使用它,儘管它有一個缺點,如果'and'後面的表達式評估爲false,它可能不會做你想要的。所以我現在傾向於使用條件表達式,當時我認爲使用一行代碼是有必要的。 OTOH,我同意可讀性勝過保存幾行代碼,並且明確的if-else結構往往比單線程版本更具可讀性。 – 2014-09-20 17:58:26
爲什麼你一定需要一個班輪?大多數人會發現這更易讀。 – George 2014-09-20 14:49:28
只是爲了縮短我的代碼,如果可能的話。 – Taylor 2014-09-20 14:50:19
您應該優化可讀性,而不是短代碼。關於你如何做這件事絕對沒有錯,我個人強烈希望顯式的if-else外觀到單行版本。 – 2014-09-20 14:51:29