list comprehension列表本身是None

时间:2016-07-06 22:40:46

标签: python list-comprehension

我有办法处理列表my_list本身可以为None的情况 列表理解:

[x for x in my_list]

我试过了:

[x for x in my_list if my_list is not None else ['1']]

然而,它似乎无法发挥作用。

3 个答案:

答案 0 :(得分:8)

我认为这可以满足您的需求:

>>> my_list = None
>>> [x for x in my_list] if my_list is not None else ['1']
['1']

这里的变化是将三元语句移到列表理解之外。

或者,如果我们添加一些parens,我们可以将三元语句保留在列表理解中:

>>> my_list = None
>>> [x for x in (my_list if my_list is not None else ['1'])]
['1']

答案 1 :(得分:2)

您的代码等同于制作列表的副本(如果不是,则为其他设置["1"]的任何内容:

 whatever = my_list[:] if my_list is not None else ['1']

但我有一种感觉,你真正想要的可能是一个if my_list is None

if my_list is None:
     my_list = ['1']

答案 2 :(得分:1)

另一个简单的解决方案如下:

[x for x in my_list or ['1']]

然而,您的代码几乎是正确的:您只需要通过添加几个括号来考虑运算符优先级:

[x for x in (my_list if my_list is not None else ['1'])]