リストまたはタプルのすべての要素の型が同じで、特定の型であることをどのように確認しますか?例えば要素のテスト型python tuple/list
:
(1, 2, 3) # test for all int = True
(1, 3, 'a') # test for all int = False
リストまたはタプルのすべての要素の型が同じで、特定の型であることをどのように確認しますか?例えば要素のテスト型python tuple/list
:
(1, 2, 3) # test for all int = True
(1, 3, 'a') # test for all int = False
all(isinstance(n, int) for n in lst)
デモ:
In [3]: lst = (1,2,3)
In [4]: all(isinstance(n, int) for n in lst)
Out[4]: True
In [5]: lst = (1,2,'3')
In [6]: all(isinstance(n, int) for n in lst)
Out[6]: False
代わりのisinstance(n, int)
あなたも、あなたがそれをもやっていることに応じて、type(n) is int
all(isinstance(i, int) for i in your_list))
を使用することができますより多くのPythonic duck typingを使用してください。そうすることで、int型(浮動小数点型など)のものもint型も渡すことができます。このケースでは、int
にタプルの各項目を変換しようとし、その後に発生した例外をキャッチすることがあります
>>> def convert_tuple(t, default=(0, 1, 2)):
... try:
... return tuple(int(x) for x in t)
... except ValueError, TypeError:
... return default
...
次にあなたがそうのようにそれを使用することができます:
>>> convert_tuple((1.1, 2.2, 3.3))
(1, 2, 3)
>>> convert_tuple((1.1, 2.2, 'f'))
(0, 1, 2)
>>> convert_tuple((1.1, 2.2, 'f'), default=(8, 9, 10))
(8, 9, 10)
OPがどうあるべきisinstance(10 ** 100、int)== Falseなので、Python 2でこれが予期しない動作につながる可能性があると警告しました。 isinstance(n、(int、long))を行う必要があります。しかし、Pythonでは、何かのタイプをチェックする必要があるのは、しばしば、設計ミスの兆候です。 – DSM
また、 'type()'は古いスタイルのクラスに対して ''を返します。 –
Gandaro