【问题标题】:Python list comprehension with two lists: evaluate lists具有两个列表的 Python 列表推导:评估列表
【发布时间】:2016-03-24 18:07:45
【问题描述】:

我有两个列表:

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

【问题讨论】:

  • 感谢您的接受,但我写它只是为了替代。赞成的答案(使用or)是您肯定应该使用的答案。
  • @Lafexlos,我会的。对于读者恕我直言,这似乎更直观。

标签: python list if-statement list-comprehension


【解决方案1】:

您不需要列表理解。这正是or 操作所做的:

>>> input_list or existing_list 
['a', 'b']
>>> input_list = []
>>> 
>>> input_list or existing_list 
['q', 'w', 'r']

【讨论】:

  • “保持简单和愚蠢”.. :)
【解决方案2】:

除了 Kasramvd 建议的or(这应该是的方法),您还可以使用ternary operator

list_to_use = input_list if input_list else existing_list

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 2021-09-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多