【Python】演算子の種類と使い方

Python

こちらではPythonの主要な演算子についてのご説明をします。

スポンサーリンク

算術演算子

四則演算(足し算、引き算、掛け算、割り算)など、算術的な計算をおこなうための演算子です。

演算子内容使用例結果
+足し算1 + 23
引き算2 – 11
*掛け算5 * 210
**べき乗2 ** 28
/割り算6 / 23
//割り算の整数部分5 // 22
%割り算の余り部分10 % 31

代入演算子

左辺の値を右辺に代入するための演算子です。

※演算の前提として「X = 3」とします。

演算子内容使用例結果
=右辺を左辺に代入A = 1
+=両辺を足し算した結果を左辺に代入X += 2X = 5
-=左辺を右辺で引き算した結果を左辺に代入X -= 1X = 2
*=両辺を掛け算した結果を左辺に代入X *= 2X = 6
/=左辺を右辺で割り算した結果を左辺に代入X /= 2X = 1.5
//=左辺を右辺で割り算した整数部分を左辺に代入X //= 2X = 1
%=左辺を右辺で割り算した余り部分を左辺に代入X %= 2X = 1
**=左辺を右辺でべき乗した結果を左辺に代入X **= 2X = 9

比較演算子

左辺と右辺を比較して、結果を真偽値(「True」もしくは「False」)で表す演算子です。

演算子内容使用例結果
<より大きい3 < 5True
>より小さい3 > 5False
>=以上1 >= 2False
<=以下1 <= 2True
==等しい3 == 3True
!=等しくない3 != 3False
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

リストの比較

リストの比較方法についてご紹介します。

リストはつぎの順で比較がされます。

  1. それぞれのリストの左端から順番に比較をする
  2. リスト中に異なる要素がある場合、その値の比較をする
  3. リスト中に異なる要素がない場合、要素数で比較をする
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

  • 「==」は「オブジェクトの値」が等しいかどうかを判定する
  • 「is」は「オブジェクトの参照」が等しいかどうかを判定する

論理演算子

2つ以上の値の比較をして、結果を真偽値(「True」もしくは「False」)で表す演算子です。
「True」や「False」を返す条件式とあわせて論理演算子をつかいます。

演算子内容使用例結果
and値がいずれも「True」True and TrueTrue
or値のいずれかが「True」True or FalseTrue
not「True」「False」を反転not TrueFalse

優先順位

演算子の優先順位の高い順に並べた一覧表です。

優先度演算子内容
1()丸カッコ
 []リスト型
 {}辞書型
 []集合型
2x[index]添字指定
 x[index:index]スライス操作
 x(引数)関数呼び出し
 x.属性属性参照
3await xAwait式
4xxべき乗
5+x正数
 -x負数
 ~xビット反転
6*乗算
 @行列乗算
 /割り算
 //割り算の整数部分
 %割り算の余り部分
7+足し算
 引き算
8<<左ビットシフト
 >>右ビットシフト
9&論理積
10^排他的論理和
11|論理和
12in含まれている
 not in含まれない
 is等しい
 is not等しくない
 <右辺が左辺より大きい
 <=右辺が左辺以上
 >左辺が右辺より大きい
 >=左辺が右辺以上
 !=左辺と右辺が等しくない
 ==左辺と右辺が等しい
13not xxの真偽を反転
14and値がいずれも「True」
15or値のいずれかが「True」
16if else条件式
17lambdaラムダ式
18:=代入式

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