假设我有一个列表 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'])