如何检查Python列表是否仅包含None

38 投票
5 回答
40440 浏览
提问于 2025-04-16 03:23
l=[None,None]

有没有一个函数可以检查列表 l 里面是否只包含 None 呢?

5 个回答

17

可以试试 any() 这个函数,它会检查列表里是否有至少一个元素在布尔上下文中被认为是 True。比如说,None 在布尔上下文中被认为是 False,所以如果你用 any(l),结果就会是 False

需要注意的是,如果你想检查一个列表本身是否是 None,你应该用 if l is None。而如果你想检查这个列表是否是 None 或者是空的,可以用 if not l

36
L == [None] * len(L)
$ python -m timeit -s'L=[None]*1000' 'all(x is None for x in L)'
1000 loops, best of 3: 276 usec per loop
$ python -m timeit -s'L=[None]*1000' 'L==[None]*len(L)'
10000 loops, best of 3: 34.2 usec per loop

当 L 全部是 None 的时候,使用这个方法比用 all() 快很多。

50

如果你的意思是要检查列表 l 里是否只包含 None(空值),

if all(x is None for x in l):
  ...

撰写回答