質問: よく用いられるタイタニック号のデータです。 データ内の型についてのプログラムを作成しようとしているのですが、int型の確認で困っております。 ``` a=np.unique(df["Survived"]) #要素内は[0 1] print(type(a)) # print(type(a[0])) # #上記でintであることを確認した上で、 if type(a[0]) is int : print("int") else: print("intではありません") #上記は intではないと出力される。 if type(a[0]) is int or float : print("int or float") else: None #としてみると、int or floatと表示されます。 ``` 上記のように type型の関数でintであることを確認したが、type(a[0]) is int で調べるとintではないと出力される理由がわからずに困っています。 if type(a[0]) is int or float でなぜ int or floatと出力されるのでしょうか。 データ型の確認の基本なのかもしれませんが、よろしくお願いいたします。
回答: 誤解1 === > > type(a[0]) is intで調べる > > > intとnp.int64は別物なので、np.int64 is int は False ですね。 誤解2 === > > if type(a[0]) is int or float でなぜ int or floatと出力されるのでしょうか。 > > > orの使い方を間違えています。 ``` # Trueと表示される!なんで? if 2 == 3 or 4: print(True) ``` これは条件が (2 == 3) or 4 とパースされているためです。 次のように書くと想像通りに働きます。 ``` # これならTrueと表示されない if 2 == 3 or 2 == 4: print(True) ``` ご提示のコードについても同様です。 type(a[0]) is int or float は (type(a[0]) is int) or float と解釈されます。