Python列表理解有两个列表:评估列表

时间:2016-03-24 18:07:46

标签: python list if-statement list-comprehension

我有两个清单:

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']的错误结果。

2 个答案:

答案 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