Python

Pythonを勉強してみたVol.4

Python

はじめに

今回は二項演算子と比較演算子について勉強してみました!

Pythonでは結構直感的に使えるので、簡単なところではあると思うのですが、細かい所まではちゃんと理解していなかったので、改めて勉強したことをまとめました!

二項演算子と比較演算子のリスト

まずは二項演算子と比較演算子のリストを下記に作成しました!

演算定義
a + ba と b を足す。
a – ba から b を引く。
a * ba に b を掛ける。
a / ba を b で割る。
a // ba を b で割った商の整数部分(小数点以下切り捨て)。
a ** ba の b 乗。
a & ba も b もTrueであればTrueを返す。a、bともに整数の場合はビット単位のANDを返す。
a | ba も b のいずれかがTrueであればTrueを返す。a、bともに整数の場合はビット単位のORを返す。
a ^ ba か b のいずれかがTrueであればTrueを返す。ただし両方ともTrueの場合はFalseを返す。
a、bともに整数の場合はビット単位のXORを返す。
a == ba と b が等しい場合Trueを返す。
a != ba と b が等しくない場合Trueを返す。
a <= b,
a < b
a が b 以下の場合Trueを返す。
a が b より小さい場合Trueを返す。
a >= b,
a > b
a が b 以上の場合Trueを返す。
a が b より大きい場合Trueを返す。
a is ba と b とが同一オブジェクトの参照である場合Trueを返す。
a is not ba と b とが同一オブジェクトの参照でない場合Trueを返す。

この中で一番分かりにくそうな「is」と「is not」についてもう少し解説します。

is, is notについて

表にも書きましたがある2つの参照が同じオブジェクトを参照しているかを確認するとなっていますが、これについて分かりにくいので下記例を用いて説明します。

a,b,cには同じ配列「1, 2, 3」を入れていますが、結果は「a is b」はTrueで「a is c」はFalseになっています。これはどうしてかと言いますと、aとbは同一オブジェクトを参照していますが、cはlist関数でコピーしたため同一オブジェクトでは無くなったためです。

上記は先ほどの例に「a.append(4)」を追記しました。そうするとbはaと同じ結果になりますが、cは同じ結果になりません。これが同一オブジェクトを参照しているかどうかの違いになります。cはlist関数を使ったため、aのlistをコピーし、cに入れています。この時に同じオブジェクトでは無くなった為、「a is c」をするとFalseが返ってきます。

おわりに

ここまで読んで頂き、ありがとうございました。一見簡単に見える二項演算子と比較演算子ですが、思わぬ所で引っ掛かるので、皆さんも間違えないようにしていきましょう!

コメント

タイトルとURLをコピーしました