【问题标题】:How do I test for null list entry in python list如何在 python 列表中测试空列表条目
【发布时间】:2013-10-08 15:56:28
【问题描述】:

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

【问题讨论】:

  • 我尝试将[1,2,,4,5,6] 输入我的解释器并得到SyntaxError。你能展示你的实际代码吗?
  • if element == None?

标签: python


【解决方案1】:

检查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或布尔值False

真值

所有其他值都被视为True

你的问题:

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

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

如果您想检查元素是否 None,那么 @esauro 在 cmets 中是正确的:

>>> 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

【讨论】:

  • 这不准确。如果element 为 0,则不为空,也不是无,但not element 将评估为 True。同样,如果元素是[](一个空列表),它将评估为True。因此你应该测试element is Nonenot element is None
  • 谢谢@esauro - 我已经根据你的评论和戳答案更新了我的答案
  • 谢谢@Ewan。现在得到更完整的答案。
【解决方案2】:

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

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

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

【讨论】:

  • 我喜欢这个,因为它不会在检查过程中创建新列表。
【解决方案3】:

我有一个 python 列表 [1,2,,4,5,6]。什么是最好的测试方法 对于缺少的或 null 的列表元素?

如果您只想知道列表是否包含 falsey value(这是 Python 中 missing 或 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]) 

如果列表包含所有偶数,则为真。

【讨论】:

  • 您不需要x for x in 部分。零也将被视为假。
  • 如果你想测试非真假以外的东西,你需要x for x
【解决方案4】:

查找所有存在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]

【讨论】:

  • 请注意,None 应该使用身份进行比较,而不是相等:if item is None...
  • @JonClements 你能给我一个解释吗?我是 python 新手。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-06
相关资源
最近更新 更多