Python: 演算子の一覧

Pythonの演算子一覧です。

比較演算子(== != <= ...)

演算子意味
==等値
!=不等値
<小なり
<=小なりイコール
>大なり
>=大なりイコール
in左辺が右辺に存在する
not in左辺が右辺に存在しない
is 左辺と右辺が同一のオブジェクト
is not左辺と右辺が同一オブジェクトでない

ありがちな記述ミス

比較演算子でプログラミング初心者がやりがちなミスは次の2つです。

  • 「==(等値演算子)」をうっかり「=(代入演算子)」と書いてしまう。
  • 「<=」と「>=」の順番をまちがえて「=>」と「=<」のように「=」記号を先に書いてしまう。

in演算子

in演算子はリストなどのコレクション内に、 特定の要素が存在するかどうかを調べる場合に使用します。
次のサンプルコードでは 配列arrの要素に変数nと同じ値が存在するかどうかを調べています。

arr = [1, 2, 3]
n = 2

if n in arr:
	print("True")
else:
	print("False")

# 実行結果
True

算術演算子(+ - * / ...)

演算子意味
+加算
-減算
*乗算
**べき乗
/除算
//除算(小数点は切り捨て)
%余り(除算の余り)

除算、「/」と「//」の違い

Pythonには除算を行うための演算子が2つあります。 「/」は小数点以下の値まで取得できますが、 「//」は小数点部分は切り捨てられます。

print(5 / 4)   # 1.25

print(5 // 4)  # 1

どちらもゼロで割るとエラーになるので注意してください。

除算の余りを求める「%」

除算の余りを知りたい場合は「%」を使います。

print(5 % 4)  # 1

print(9 % 5)  # 4

アルゴリズムで除算の余りを用いて ロジックを構築することがあり、結構重宝する演算子です。
「%」も0で割るとエラーになります。

ビット演算子(& | ...)

演算子意味
~ビット反転
&AND
|OR
^XOR
<< 左シフト
>>右シフト

代入演算子(= += -= ...)

演算子意味
=右辺の値を左辺に代入
+=左辺=左辺 + 右辺
-=左辺=左辺 – 右辺
*=左辺=左辺 * 右辺
/=左辺=左辺 / 右辺
%=左辺=左辺 % 右辺
**=左辺=左辺 ** 右辺
//=左辺=左辺 // 右辺
|=左辺=左辺 | 右辺
^=左辺=左辺 ^ 右辺
<<=左辺=左辺 << 右辺
>>=左辺=左辺 >> 右辺

Pythonには「++」や「--」がありません。 代わりに「+=」「-=」を使って、「a += 1」「a -= 1」のように記述します。

論理(ブール)演算子(and or not)

演算子意味
and論理積
or論理和
not否定

論理演算子はif文の条件式で使われること多い演算子です。
andとorは条件式が2つ以上ある場合に使い、 notは論理値(True/False)をひっくり返す(逆にする)場合に使います。

and、or、notのそれぞれの意味を見ていきます。

# aが10で、かつbが20の場合
if a == 10 and b == 20:

# aが10、又はbが20の場合
if a == 10 or b == 20:

# aが10でない場合
if not(a == 10):

余談ですが、論理演算子の名前の由来について。
条件式は最終的にTrue/Falseの論理値に置き換わります。 ですから「True and True」や「True or False」のようにand・or・notの演算対象は 論理値(True/Flase)になります。 論理値に対して演算を行うことから「論理演算子」と言われています。

文字列演算子(+ * [] ...)

演算子意味
+連結
*繰り返し
[n]i番目
[n:m]n番目からm番目まで
[:m]最初からm番目まで
[n:]n番目から最後まで
[n:m:s]n番目からm番目まで、ステップ数s

三項演算子(条件演算)(if else)

変数 = 「Trueの場合の値」 if 「条件」 else 「Falseの場合の値」

三項演算子(条件演算)の具体例

s = "high" if a > 50 else "low"

上の条件演算は下の if else文と同じ意味です。

if a > 50:
	s = "high"
else:
	s = "low"
Python