检查列表是否为空或仅包含None的最简洁方法?

6 投票
4 回答
5023 浏览
提问于 2025-04-15 13:34

最简洁的方法来检查一个列表是否为空,或者只包含None(空值)?

我知道我可以测试:

if MyList:
    pass

还有:

if not MyList:
    pass

但是如果列表里有一个(或多个)项目,但这些项目都是None呢:

MyList = [None, None, None]
if ???:
    pass

4 个回答

4

你可以直接用 == 来比较两个列表:

if x == [None,None,None]:

if x == [1,2,3]
9

你可以使用 all() 这个函数来检查所有的元素是否都是 None(空值)。

a = []
b = [None, None, None]
all(e is None for e in a) # True
all(e is None for e in b) # True
15

一种方法是使用 all 函数和列表推导式:

if all(e is None for e in myList):
    print('all empty or None')

这个方法也适用于空列表。更一般来说,如果你想检查一个列表里是否只包含那些被认为是 False 的东西,你可以使用 any 函数:

if not any(myList):
    print('all empty or evaluating to False')

撰写回答