python:如何识别变量是数组还是标量

问题描述

>>> isinstance([0, 10, 20, 30], list)
True
>>> isinstance(50, list)
False

支持任何类型的序列,请选中collections.Sequence而不是list

isinstance支持一个元组类,type(x) in (..., ...)应避免检查,这是不必要的。

您可能还想检查 not isinstance(x, (str, unicode))

解决方法

我有一个接受参数的函数NBins。我想用标量50或数组对此函数进行调用[0,10,20,30]。我如何识别函数的长度NBins是多少?或换句话说,如果它是标量或向量?

我尝试了这个:

>>> N=[2,3,5]
>>> P = 5
>>> len(N)
3
>>> len(P)
Traceback (most recent call last):
  File "<stdin>",line 1,in <module>
TypeError: object of type 'int' has no len()
>>>

正如你看到的,我不能申请lenP,因为它不是一个数组....有什么样isarrayisscalar在Python?

谢谢