Python 列表初始化中的条件项

Conditional terms in Python list initialization

我想做这样的事情:

a = some_funct()
b = [ 1, a if a is not None ]

如果 a 是 None,列表 b 应该是一个元素长,如果 a 不是 None,则列表 b 应该是两个元素长。这在 Python 中是否可行,或者我是否必须使用单独的 if 检查后跟 add()?

看起来不是最好的,但你可以做到

b = [1] + ([a] if a is not None else [])

当然,最好检查一下,这样可以增加代码的可读性。

您可以使用列表理解来做到这一点

b = [x for x in (1, a) if x is not None]

元组(1, a)是总集,b将成为该总集中所有不属于None

的元素的列表
a = some_funct()
b = [ 1, a ] if a is not None else [1]

我玩这个游戏太晚了,但我有同样的问题,在看到其他答案后,我想出了这个解决方案 sets:

list({1, a or 1})