在python中检查变量是否为数字类型的最佳方法是什么

时间:2014-08-04 21:32:26

标签: python types

我知道我可以使用type()和isinstance()来检查某个变量是属于某个类型还是属于某个类。我想知道是否有一种快速检查变量是否为“数字”类型的方法,类似于MATLAB中的isnumeric。如果变量是int,long,float,double,int或float数组等,它应该返回True。非常感谢任何建议。

谢谢。

2 个答案:

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