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 |