如果list具有值,则将它们附加到另一个列表,否则附加预定义值

时间:2014-11-15 15:29:43

标签: python list

假设我有一个列表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]],这对我想要做的事情不起作用。

任何想法如何使这项工作?

1 个答案:

答案 0 :(得分:4)

使用默认值传递列表;这里也不需要列表理解:

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

我在这里使用了or因为在布尔上下文中空列表被认为是假的;它在这里更紧凑,避免重复自己。

条件表达式版本为:

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