こちらではPythonの主要な演算子についてのご説明をします。
算術演算子
四則演算(足し算、引き算、掛け算、割り算)など、算術的な計算をおこなうための演算子です。
| 演算子 | 内容 | 使用例 | 結果 |
| + | 足し算 | 1 + 2 | 3 |
| – | 引き算 | 2 – 1 | 1 |
| * | 掛け算 | 5 * 2 | 10 |
| ** | べき乗 | 2 ** 2 | 8 |
| / | 割り算 | 6 / 2 | 3 |
| // | 割り算の整数部分 | 5 // 2 | 2 |
| % | 割り算の余り部分 | 10 % 3 | 1 |
代入演算子
左辺の値を右辺に代入するための演算子です。
※演算の前提として「X = 3」とします。
| 演算子 | 内容 | 使用例 | 結果 |
| = | 右辺を左辺に代入 | A = 1 | |
| += | 両辺を足し算した結果を左辺に代入 | X += 2 | X = 5 |
| -= | 左辺を右辺で引き算した結果を左辺に代入 | X -= 1 | X = 2 |
| *= | 両辺を掛け算した結果を左辺に代入 | X *= 2 | X = 6 |
| /= | 左辺を右辺で割り算した結果を左辺に代入 | X /= 2 | X = 1.5 |
| //= | 左辺を右辺で割り算した整数部分を左辺に代入 | X //= 2 | X = 1 |
| %= | 左辺を右辺で割り算した余り部分を左辺に代入 | X %= 2 | X = 1 |
| **= | 左辺を右辺でべき乗した結果を左辺に代入 | X **= 2 | X = 9 |
比較演算子
左辺と右辺を比較して、結果を真偽値(「True」もしくは「False」)で表す演算子です。
| 演算子 | 内容 | 使用例 | 結果 |
| < | より大きい | 3 < 5 | True |
| > | より小さい | 3 > 5 | False |
| >= | 以上 | 1 >= 2 | False |
| <= | 以下 | 1 <= 2 | True |
| == | 等しい | 3 == 3 | True |
| != | 等しくない | 3 != 3 | False |
| is | 等しい | [‘a’,’b’] is [‘a’,’b’] | False |
| is not | 等しくない | [‘a’,’b’] is not [‘a’,’b’] | True |
| in | 含まれている | ‘a’ in [‘a’,’b’,’c’] | True |
| not in | 含まれない | ‘d’ in [‘a’,’b’,’c’] | False |
リストの比較
リストの比較方法についてご紹介します。
リストはつぎの順で比較がされます。
- それぞれのリストの左端から順番に比較をする
- リスト中に異なる要素がある場合、その値の比較をする
- リスト中に異なる要素がない場合、要素数で比較をする
list1 = [1,2,3] list2 = [1,2,4] list1 < list2
True
list1 = [1,2,3] list3 = [1,2,3,1] list1 < list3
True「==」と「is」による比較のちがい
「==」と「is」はどちらも「等しい」を表しますが、どのような違いがあるかを見ていきましょう。
「==」による比較は、「同じオブジェクトの値かどうか」を基準にしています。
それに対して「is」による比較は、比較対象となるオブジェクトが「同じオブジェクトを参照しているかどうか」を基準にしています。
「id関数」をつかって、「オブジェクトの値」と「オブジェクトの参照」の違いについて確認をしてみましょう。
「id関数」とは、Pythonのオブジェクトにある「参照されるための識別子(ID)」を確認するための関数です。Pythonのオブジェクトには、それぞれの「値」に対して「ID」が割り振られています。「id関数」を使うことによって、この「ID」を表示させることができます。
まずは、「オブジェクトの値」を確認します。
print(id(['a','b'])) print(id(['a','b'])) print(id(['a','b']))
3014087738176
3014087738688
3014087739456「リスト」である「[‘a’,’b’]」の「ID」を表示させましたが、それぞれ別の値になっていることが確認できます。
つぎに、「オブジェクトの参照」を確認します。
A = ['a','b'] print(id(A)) print(id(A)) print(id(A))
140714910431040
140714910431040
140714910431040こちらで表示されている「ID」は、どれも同じ値になっていることが確認できます。
つまり「==」では、「同じオブジェクトの値かどうか」を判定するので、次のような結果になります。
A = ['a','b'] print(A == ['a','b']) print(['a','b'] == ['a','b'])
True
True対して「is」では、「同じオブジェクトを参照しているかどうか」を判定するので、次のような結果になります。
A = ['a','b'] print(A is ['a','b']) print(['a','b'] is ['a','b'])
False
False繰り返しになりますが「is」による判定では、比較対象が「ID」であり、その「ID」が同じではないため「False」といった結果になっています。
ただしひとつ注意が必要です。
Python側のメモリを節約するための例外的な動作のようですが、値が変更不可(イミュータブル)の場合には同じ「オブジェクトの値」を参照します。
abc1 = 'abc' abc2 = 'abc' print(abc1 is abc2) print(id(abc1)) print(id(abc2))
True
3014021082928
3014021082928論理演算子
2つ以上の値の比較をして、結果を真偽値(「True」もしくは「False」)で表す演算子です。
「True」や「False」を返す条件式とあわせて論理演算子をつかいます。
| 演算子 | 内容 | 使用例 | 結果 |
| and | 値がいずれも「True」 | True and True | True |
| or | 値のいずれかが「True」 | True or False | True |
| not | 「True」「False」を反転 | not True | False |
優先順位
演算子の優先順位の高い順に並べた一覧表です。
| 優先度 | 演算子 | 内容 |
| 1 | () | 丸カッコ |
| [] | リスト型 | |
| {} | 辞書型 | |
| [] | 集合型 | |
| 2 | x[index] | 添字指定 |
| x[index:index] | スライス操作 | |
| x(引数) | 関数呼び出し | |
| x.属性 | 属性参照 | |
| 3 | await x | Await式 |
| 4 | xx | べき乗 |
| 5 | +x | 正数 |
| -x | 負数 | |
| ~x | ビット反転 | |
| 6 | * | 乗算 |
| @ | 行列乗算 | |
| / | 割り算 | |
| // | 割り算の整数部分 | |
| % | 割り算の余り部分 | |
| 7 | + | 足し算 |
| – | 引き算 | |
| 8 | << | 左ビットシフト |
| >> | 右ビットシフト | |
| 9 | & | 論理積 |
| 10 | ^ | 排他的論理和 |
| 11 | | | 論理和 |
| 12 | in | 含まれている |
| not in | 含まれない | |
| is | 等しい | |
| is not | 等しくない | |
| < | 右辺が左辺より大きい | |
| <= | 右辺が左辺以上 | |
| > | 左辺が右辺より大きい | |
| >= | 左辺が右辺以上 | |
| != | 左辺と右辺が等しくない | |
| == | 左辺と右辺が等しい | |
| 13 | not x | xの真偽を反転 |
| 14 | and | 値がいずれも「True」 |
| 15 | or | 値のいずれかが「True」 |
| 16 | if else | 条件式 |
| 17 | lambda | ラムダ式 |
| 18 | := | 代入式 |