【发布时间】:2012-10-19 12:00:20
【问题描述】:
有时我想测试一个变量是0 还是None。在纯 Python 中,这很简单
foo == True
但是当foo 可能是一个 Numpy 对象(例如numpy.ndarray)时,这不再起作用并且我得到错误:
ValueError: The truth value of an array with more than one element is ambiguous.
Use a.any() or a.all()
在这种情况下,我想要a.any(),但是这在不可迭代的对象上会失败。
当然,我可以明确检查foo 是0 还是None,但我想知道是否有更优雅的方法来做到这一点。
如何检查任意对象(可迭代和不可迭代)是否为True?
【问题讨论】:
-
从 Python 上讲,它是
if foo- 这适用于大多数事情。不幸的是,您必须使用特殊情况numpy.ndarray或任何其他比 0、None、False、len() == 0 等同于 False 更复杂的类型。 -
我通常使用
array is None检查 numpy 对象是否为 None,但这不会检查零。看到这里有一个类似的问题,stackoverflow.com/questions/5086178/…