有时候我想测试一个变量是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
?
答案 0 :(得分:2)
答案 1 :(得分:1)
我使用的方法是假设在try除了块之外存在变量的语句中包含该语句:
try:
do_something(foo)
except NameError:
foo = something
答案 2 :(得分:0)
这个逻辑可以让你的工作变量是 np 数组与否。
import numpy as np
l = np.eye(3)
if(str(type(l)) == "<class 'numpy.ndarray'>"):
print('yes')
else:
print('no')