7

我有一个 python 列表[1,2,,4,5,6]null测试缺失或列表元素的最佳方法是什么?我目前正在执行,if element != ''但我认为有一个内置测试可以执行这样的事情,还是我错了?

4

4 回答 4

7

用于检查Noneor的 Pythonic 方法null是:

if element:
    # This is not null

if not element:
    # This is null

关于和之间的区别有一个非常详细的答案if not xif x == None

编辑1:

结合评论和其他答案:

错误值

Python 将以下内容视为False source

  • None
  • False
  • 任何数字类型的零,例如:0, 0L, 0.0,0j
  • 任何空序列,例如:'', (),[]
  • 任何空映射,例如:{}
  • 用户定义类的实例,如果该类定义了一个__nonzero__() __len__()方法,当该方法返回整数zero或布尔值时False

真值

所有其他值都被认为是True

你的问题:

如果您确实None在检查列表中是否存在 ( [1,2,None,4,5,6]),那么 @Poke 的答案是正确的:

>>> lst = [1, 2, None, 4, 5, 6]
>>> None in lst
True

如果您想检查该元素是否只有 None@esauro 在评论中是正确的:

>>> lst = [1, 2, None, 4, 5, 6]
>>> for x in lst:
...  if not x:
...    print(x)
None

但是如果你的lstcontains 0(lst = [0, 1, 2, 4, 5, 6]) 那么你的输出将是0.

你可以解决这个问题的唯一方法是明确检查if element is Noneor if element is not None

于 2013-10-08T16:01:04.547 回答
5

如果您的列表是,[1, 2, None, 4, 5, 6]那么您可以检查None in lst,例如:

>>> lst = [1, 2, None, 4, 5, 6]
>>> None in lst
True

同样,如果您有一些其他值表示“缺失”条目,则只需检查whatever in lst.

于 2013-10-08T16:01:00.797 回答
5

我有一个 python 列表 [1,2,,4,5,6]。测试缺失或空列表元素的最佳方法是什么?

如果您只想知道列表是否包含错误值(这是 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]) 

如果列表包含所有偶数,这将是正确的。

于 2013-10-08T16:46:22.070 回答
0

找到所有有 a 的索引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]
于 2013-10-08T16:02:23.363 回答