比較演算子・論理演算子・is演算子について学んでいきましょう。
比較演算子
まずは比較演算子です。比較演算子は、条件に合致するとTrueを、合致しないとFalseを返します。
比較演算子の種類について以下の表にまとめました。
比較演算子 | 意味 |
> | 大きい |
< | 小さい |
== | 同一 |
!= | 異なる |
>= | 以上 |
<= | 以下 |
それぞれの演算子を順番に見ていきましょう。
> (大きい)
>は、大きい場合にTrueを返す演算子です。
コードprint( 10 > 5 )
print( 5 > 10 )
アウトプットTrue
False
< (小さい)
<は、小さい場合にTrueを返す演算子です。
コードprint( 10 < 5 )
print( 5 < 10 )
アウトプットFalse
True
== (同じ)
==は、同じ場合にTrueを返す演算子です。
コードa = 1
b = 1
print (a == b)
アウトプットTrue
文字列でお伝えしましたが、Pythonでは大文字と小文字が区別されます。
実際にコードで確認してみましょう。
コードa = 'car'
b = 'CAR'
print (a == b)
アウトプットFalse
!= (異なる)
!=は、異なる場合にTrueを返す演算子です。
コードa = 1
b = 2
print (a != b)
アウトプットTrue
>= (以上)
>=は同じかそれ以上の場合において費用が発生します。
コードprint( 10 >= 10 )
アウトプットTrue
<= (以下)
<=は同じかそれ以下の場合において費用が発生します。
コードprint( 10 <= 10 )
アウトプットTrue
論理演算子
次は、論理演算子をみていきましょう。
論理演算子 | 意味 |
and | AかつB |
or | AまたはB |
not | True⇔False |
実際のコードをみていきましょう。
and
まずはandです。これは2つの比較対象が両方ともTrueの場合にTrueを返し、それ以外の場合はFalseを返します。
コードa = (10 > 5) and (10 > 5)
print(a)
アウトプットTrue
10>5がTrueとなりますので、上記のaはTrue and Trueとなり、結果もTrueとなります。
コードa = (10 > 5) and (10 < 5)
print(a)
アウトプットFalse
10>5はTrueですが、10<5はFalseになりますので、上記のaはTrue and Falseとなり、結果はFalseになります。
or
次はorです。これは2つの比較対象のどちらかがTrueの場合にTrueを返し、どちらもFalseの場合のみFalseを返します。
コードa = (10 > 5) and (10 < 5)
print(a)
アウトプットFalse
アウトプットFalse
10>5がTrueですので、10<5の結果に関係なく結果はFalseになります。
not
notはTrueをFalseにし、FalseをTrueにします。
notがコードに入ると少し読みづらくなることが多いですので、かっこを使うことで読みやすいコードにすることを意識すると良いでしょう。
なお、演算子の優先順位については、演算の優先順位という記事で詳しく解説しています。
コードa = (not (10 > 5)) and (not (10 < 5))
print(a)
アウトプットFalse
左辺は(not (10 > 5))です。まずは10>5がTrueになり、それがnotでFalseになります。
and演算子が使われていますので、結果として右辺が何であっても結果はFalseになります。
is演算子
最後はis演算子です。
is演算子は、比較する2つが同じかどうかを判断する時に使われます。
== と isの違い
論理演算子のところで、==という演算子があることをお伝えしました。これも比較する2つが同じかどうかを判断する時に使われるのですが、何が違うのでしょうか。
厳密な理解ではないのですが、is演算子は、メモリの同じアドレスにデータが入っているかを判断する時に使われ、==はデータそのものが同じかどうかを判断する時に使われます。
メモリについては、メモリとアドレスという記事で詳しく解説していますので、ぜひ参考にしてみて下さい。
同じアドレスに格納されているかどうかを確認するには、id関数を使います。
※id関数で返されるのはオブジェクトの”識別値”で、これはメモリ上のアドレスとは異なることを頭に入れておきましょう。
実際のコードで確認していきます。
コードa = 1
b = 1
print(id(a))
print(id(b))
print (a is b)
アウトプット12348766
12348766
True
変数aとbに1を代入し、id関数を使って識別値を確認しています。
結果を見るとaとbの識別地は同じということが分かりました。
ですので、a is b はTrueを返します。
比較演算子・論理演算子・is演算子のまとめ
(1) 条件に合致すればTrueを、合致しなければFalseを返す
(2) コードが長くなった場合、かっこを使って分かりやすいコードを書くことが大切
比較演算子・論理演算子・is演算子を学んだ後は
これまで学んだ演算子の優先順位を確認するために、演算の優先順位を学びましょう。