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

What is the best way to check if a variable is of numeric type in python

我理解我可以使用type()和isInstance()来检查变量是属于某个类型还是属于某个类。我想知道是否有一种快速的方法来检查变量是否是"数字"类型,类似于matlab中的is numeric。如果变量为int、long、float、double、int数组或float等,则返回true。非常感谢您的建议。

谢谢您。


检查对象是否是数字的最简单方法是进行算术运算(如加0),然后看看我们是否能摆脱它:

1
2
3
4
5
6
7
8
9
10
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

运行以下脚本:

1
2
3
4
5
6
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']))

产生这个结果:

1
2
3
4
5
True
True
True
False
False