如何在python列表中测试空列表条目

时间:2013-10-08 15:56:29

标签: python

我有一个python列表[1,2,,4,5,6]。测试缺失或null列表元素的最佳方法是什么?我目前正在执行if element != '',但我认为有一个内置测试来执行此类操作,或者我错了?

4 个答案:

答案 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)

检查Nonenull的Pythonic方法是:

if element:
    # This is not null

if not element:
    # This is null

if not xif x == None之间存在非常detailed answer的差异。

编辑1:

结合评论和其他答案:

错误值

Python将以下内容视为False source

  • None
  • False
  • 任何数字类型的零,例如:00L0.00j
  • 任何空序列,例如:''()[]
  • 任何空映射,例如:{}
  • 用户定义类的实例,如果类定义了__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 Noneif 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]