if文の学習の中でも少し使いましたが、条件を設定して判定する時に比較演算を行います。if文の例では「==」「>」を使って条件の比較判定を行いました。
この比較を行うための記号を比較演算子といいます。
記号は他にもいくつかあります。
ここではPythonでの比較演算子を一通り学んで論理演算をやっていきたいと思います。
比較演算子
Pythonの比較演算子をまとめておきましょう。比較演算子は、演算した式がTrueかFalseのどちらかを返します。
比較演算子一覧
比較演算子を一覧にまとめると次のようになります。
演算子 | 意味 |
== | 等しい |
!= | 等しくない |
< | より小さい |
<= | 以下 |
> | より大きい |
>= | 以上 |
in | 要素が含まれる |
not | 比較演算子の前に置いて真偽を逆にする |
注意すべき点は、「等しい」は「=」ではなく「==」であるというところでしょうか。「=」はこれまでやってきたように右辺の値を左辺に代入するということを意味します。「等しく無い」は「≠」ですが、特殊な文字なの「!=」を使います。
比較演算子を使ってみる
実際に比較演算子を計算してみましょう。
次の簡単なコードで実行してみます。
x = 1
y = 1
print(x == y)
print(x != y)
print(x < y)
print(x <= y)
print(x < y)
print(x <= y)
z = [2, 4, 6, 8, 10]
print(2 in z)
print(not x == y)
これをAtomで実行してみます。ファイル名はcomparison_operator.pyにしています。
簡単な例なのでわかると思いますが、それぞれTrue、Falseが出力されているのがわかりますね。
論理演算子
比較演算子と同様にTrue、Falseで返すものとして、論理演算子があります。論理演算子もまとめておきましょう。
論理演算子一覧
論理演算子をまとめると以下のようになります。
演算子 | 意味 |
and | かつ(両方が成り立つ) |
or | あるいは(片方が成り立つ) |
not | 否定 |
論理学などの知識があれば理解しやすいと思います。(notは比較演算子のところでも触れましたね)
and と orで説明しておきましょう。
「a and b」とすると、aもbも真であれば真を意味します。「a or b」とすると、aまたはbが真であれば真を意味します。
論理演算をしてみる
実際に論理演算子で簡単な計算そしてみましょう。
次のコードで実行してみます。それぞれTrueの場合とFalseの場合のコードを書いています。
x = 1
y = 1
print(x > 0 and y > 0)
print(x < 0 and y > 0)
print(x > 0 or y > 0)
print(x < 0 or y < 0)
これを実行するとこうなります。
論理演算子の左右の値がTrueかFalseかをしっかり確認すれば理解できると思います。
Falseと扱えるもの
True or Falseで値が返されるものをブール値と言います。ただし、明示的にFalseと示さなくても、Falseと見なされるものがあります。
次のものは全てFalseと見なされます。
Falseと見なされるもの | 値 |
ブール値 | False |
null | None |
intのゼロ | 0 |
floatのゼロ | 0.0 |
空文字列 | ‘ ‘ |
空リスト | [] |
空タプル | () |
空辞書 | {} |
空集合 | set() |
その他のものはTrueとみなされます。
次のようなコードで、データが空かどうかをチェックしたりします。
list = []
if list:
print('データが存在します。')
else:
print('データは空です。')
リストの中に要素があればTrue、無ければ空リストなのでFalseになります。ここでのリストは空ですからどうなるか。
実行するとこうなります。
変数listには要素が空なので、if文の条件式ではFalseになります。したがって、else以下のブロックが実行されています。
まとめ
if文などで条件分岐をする時、比較演算子、論理演算子などで条件の真偽を判定する必要があります。比較演算子、論理演算子の仕組み、計算を理解しておきましょう。
比較演算子も論理演算子も計算結果の真偽をTrueかFalseで返します。
Falseはブール値以外にも明示的にFalseと示さなくてもFalseとみなされるものがあります。