我有一个python列表[1,2,,4,5,6]
。测试缺失或null
列表元素的最佳方法是什么?我目前正在执行if element != ''
,但我认为有一个内置测试来执行此类操作,或者我错了?
答案 0 :(得分:5)
如果您的列表为[1, 2, None, 4, 5, 6]
,那么您只需检查None in lst
,例如:
>>> lst = [1, 2, None, 4, 5, 6]
>>> None in lst
True
同样,如果您有一些代表“缺失”条目的其他值,您只需检查whatever in lst
。
答案 1 :(得分:5)
我有一个python列表[1,2,,4,5,6]。什么是最好的测试方法 for missing,或null,list元素?
如果您只是想知道列表是否包含falsey value(这是缺失的最佳等价物或Python中的null ),您可以这样做:
>>> all(x for x in [1,2,3,4,5])
True
>>> all(x for x in [1,2,'',4,5])
False
>>> all(x for x in [1,2,None,4,5])
False
如果您想知道是否存在符合某些条件的特定值:
all(x%2 for x in [1,2,3,4,5,7])
如果列表包含所有偶数,则为真。
答案 2 :(得分:4)
检查None
或null
的Pythonic方法是:
if element:
# This is not null
if not element:
# This is null
if not x
和if x == None
之间存在非常detailed answer的差异。
结合评论和其他答案:
Python将以下内容视为False
source:
None
False
0
,0L
,0.0
,0j
''
,()
,[]
{}
__nonzero__()
或__len__()
方法,则该方法返回整数zero
或bool值False
所有其他值均被视为True
。
如果您确实在检查列表中是否存在None
([1,2,None,4,5,6]
),那么@Poke的回答是正确的:
>>> lst = [1, 2, None, 4, 5, 6]
>>> None in lst
True
如果您想要检查该元素是否仅 <{em> None
,那么@esauro在评论中是正确的:
>>> lst = [1, 2, None, 4, 5, 6]
>>> for x in lst:
... if not x:
... print(x)
None
但如果您的lst
包含0
(lst = [0,1,2,4,5,6]),那么您的输出将为0
。
唯一可以解决此问题的方法是明确检查if element is None
或if element is not None
。
答案 3 :(得分:0)
查找存在None
的所有索引:
[i for i, item in enumerate(mylist) if item is None]
示例输出:
>>> mylist = [1, 2, None, 4, 5, 6, None, None]
>>> [i for i, item in enumerate(mylist) if item is None]
[2, 6, 7]