python中如何识别一个变量是一个数组还是一个标量?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (1325)

我有一个函数,试音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()
>>> 

正如你看到的,len不适用于P,因为它不是一个数组....是否有类似的东西isarrayisscalar在python中?

谢谢

提问于
用户回答回答于

假定数组是一个Python标准列表。作为经常使用numpy的人,我会推荐一个pythonic测试:

if hasattr(N, "__len__")
用户回答回答于
>>> isinstance([0, 10, 20, 30], list)
True
>>> isinstance(50, list)
False

你需要要支持任何类型的序列,请检查collections.Sequence而不是list

注意isinstance也支持一个类的元组,type(x) in (..., ...)应该避免检查和不必要的。

你也可能想检查 not isinstance(x, (str, unicode))

扫码关注云+社区

领取腾讯云代金券