2014-11-15 57 views
0

假設我有一個列表A,我想根據列表B中的某些值來增長。我想將B附加到A,並且在這種情況下B是空的,我想輸入一個預定義的值來表示這個。如果列表有值,將它們追加到另一個列表中,否則追加預定義的值

if B: 
    A.extend(B) 
else: 
    A.append('no value') 

此代碼完全符合我的要求,但我唯一的問題是它看起來不太pythonic。我敢肯定,必須有一種方式,一條線要做到這一點,其中的if-else語句列表中的理解,是這樣的:

A.extend([[x for x in B] if B else 'no value']) 

這條線幾乎工作,但它的情況下A = []B = [1],我最終得到A = [[1]],這不適合我想要做的事情。

任何想法如何使這項工作?

+4

你想'A.extend(B當B別的[ '沒有價值'])'? – jonrsharpe

回答

4

通過一個列表與默認值;沒有必要爲一個列表理解這裏之一:

A.extend(B or ['no value']) 

我這裏使用or因爲空列表被認爲是在布爾上下文假;它在這裏更加緊湊,避免重複自己。

條件表達式版本是:

A.extend(B if B else ['no value']) 
+0

太棒了!正是我想要的! – tarikki

+0

非常感謝Martijn。 – Kasramvd