1. ホーム
  2. python

[解決済み] python: 変数が配列かスカラーかを識別する方法

2022-03-14 06:13:55

質問

引数を取る関数があります。 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 というのは、配列ではないので...。というようなことはありませんか? isarray または isscalar pythonで?

サンクス

解決方法は?

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

あらゆる種類のシーケンスに対応するため、チェック collections.Sequence の代わりに list .

ノート : isinstance はクラスのタプルもサポートします。 type(x) in (..., ...) は避けるべきであり、不要である。

また not isinstance(x, (str, unicode))