我有两个清单:
input_list = ['a','b']
existing_list = ['q','w','r']
我想创建一个新的列表,如果它不为空,则等于input_list
,否则它应该等于existing_list
。
最简单的方法是使用普通if-else
:
if input_list:
list_to_use = input_list
else:
list_to_use = existing_list
是否可以在列表理解中或以更简洁的任何其他方式执行此操作?
list_to_use = [x if input_list else y for y in existing_list for x in input_list]
我能得到的最接近的是产生['a', 'b', 'a', 'b', 'a', 'b']
的错误结果。
答案 0 :(得分:5)
您不需要列表理解。这正是or
操作的作用:
>>> input_list or existing_list
['a', 'b']
>>> input_list = []
>>>
>>> input_list or existing_list
['q', 'w', 'r']
答案 1 :(得分:3)
Kasramvd建议的or
除外( 这样做的方式),您也可以使用ternary operator。
list_to_use = input_list if input_list else existing_list