假设我有一个列表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]]
,这对我想要做的事情不起作用。
任何想法如何使这项工作?
答案 0 :(得分:4)
使用默认值传递列表;这里也不需要列表理解:
A.extend(B or ['no value'])
我在这里使用了or
因为在布尔上下文中空列表被认为是假的;它在这里更紧凑,避免重复自己。
条件表达式版本为:
A.extend(B if B else ['no value'])