2014-11-15 51 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