我有办法处理列表my_list本身可以为None的情况 列表理解:
[x for x in my_list]
我试过了:
[x for x in my_list if my_list is not None else ['1']]
然而,它似乎无法发挥作用。
答案 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'])]