如何检查Python列表是否仅包含None
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):
...