我知道我可以使用type()和isinstance()来检查某个变量是属于某个类型还是属于某个类。我想知道是否有一种快速检查变量是否为“数字”类型的方法,类似于MATLAB中的isnumeric。如果变量是int,long,float,double,int或float数组等,它应该返回True。非常感谢任何建议。
谢谢。
答案 0 :(得分:4)
检查对象是否为数字的最简单方法是执行算术运算(例如添加0)并查看我们是否可以使用它:
def isnumeric(obj):
try:
obj + 0
return True
except TypeError:
return False
print isnumeric([1,2,3]) # False
print isnumeric(2.5) # True
print isnumeric('25') # False
答案 1 :(得分:0)
检查每个项目是否可以转换为float:
def mat_isnumeric(input):
if type(input) is list:
for item in input:
if not is_a_number(item):
return False
return True
else:
return is_a_number(input)
def is_a_number(input):
try:
float(input)
return True
except ValueError:
return False
运行以下脚本:
if __name__ == "__main__":
print(mat_isnumeric(321354651))
print(mat_isnumeric(3213543.35135))
print(mat_isnumeric(['324234324', '2342342', '2343242', '23432.324234']))
print(mat_isnumeric('asdfasdfsadf'))
print(mat_isnumeric(['234234', '32432.324324', 'asdfsadfad']))
产生这个结果:
True
True
True
False
False