こちらでは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 | := | 代入式 |