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



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

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

传递一个带有默认值的列表;这里也不需要列表推导:

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

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

条件表达式版本为:

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

最新更新