とほほのPython入門 - 演算子

トップ > Python入門 > 演算子

目次

算術演算子(+, -, *, /, %, **, //)

下記の演算子が定義されています。

Python
+a            # 正数
-a            # 負数
a + b         # 加算
a - b         # 減算
a * b         # 乗算
a / b         # 除算
a % b         # a を b で割った余り
a ** b        # a の b 乗
a // b        # 切り捨て除算

ビット演算子(~, &, |, ^, <<, >>)

下記のビット演算子が定義されています。

Python
~a            # ビット反転
a & b         # AND:論理積(aもbも1のビットが1)
a | b         # OR:論理和(aまたはbが1のビットが1)
a ^ b         # XOR:排他的論理和(aまたはbが1のビットが1)
a << b        # b ビット左シフト
a >> b        # b ビット右シフト

代入演算子(=, +=, -=, *=, /=, %=, **=, //=, &=, |=, ^=, <<=, >>=)

下記の代入演算子が定義されています。++ や -- はサポートされていないので、代わりに a += 1 や a -= 1 を用います。

Python
a = b         # a に b を代入する
a += b        # a = a + b に同じ
a -= b        # a = a - b に同じ
a *= b        # a = a * b に同じ
a /= b        # a = a / b に同じ
a %= b        # a = a % b に同じ
a **= b       # a = a ** b に同じ
a //= b       # a = a // b に同じ
a &= b        # a = a & b に同じ
a |= b        # a = a | b に同じ
a ^= b        # a = a ^ b に同じ
a <<= b       # a = a << b に同じ
a >>= b       # a = a >> b に同じ

比較演算子(==, !=, <, >, <=, >=, is, is not, in, not in)

下記の比較演算子が定義されています。

Python
a == b           # a が b と等しい
a != b           # a が b と異なる
a < b            # a が b よりも小さい
a > b            # a が b よりも大きい
a <= b           # a が b 以下である
a >= b           # a が b 以上である
a is b           # a が b と等しい
a is not b       # a が b と異なる
a in b           # a が b に含まれる (a, b は共に文字列、または、b はリストやタプル)
a not in b       # a が b に含まれない (a, b は共に文字列、または、b はリストやタプル)

ブール演算子(and, or, not)

下記のブール演算子が定義されています。

Python
a and b         # a も b も真であれば真
a or b          # a または b が真であれば真
not a           # a が偽であれば真

条件演算(if else)

下記の式は、c が真であれば x を、さもなくば y を返します。

Python
x if c else y

文字列演算(+, *, [n:m])

文字列に対して下記の演算子が定義されています。文字数は 0文字から数えます。n や m にマイナスの数を指定すると、文字列の後ろから数えます。

Python
a + b         # 文字列 a と 文字列 b を連結します
a * n         # 文字列 a を n 回繰り返します
a[n]          # 文字列 a の中の n 番目の文字を取り出します
a[n:m]        # 文字列 a の中の n 番目から m 番目までの文字列を取り出します
a[n:]         # 文字列 a の中の n 番目から最後までの文字列を取り出します
a[:m]         # 文字列 a の中の 0 番目から m 番目までの文字列を取り出します
a[n:m:s]      # 文字列 a の中の n 番目から m 番目までの文字列を s個とばしで取り出します

条件式(if else)

他言語の三項演算子に相当する機能です。下記の例では err が 0 であれば "OK" を、0 以外であれば "NG" を表示します。

Python
err = 0
print("OK" if err == 0 else "NG")

代入式(:=)

:= は Python 3.8 で追加された代入演算子です。Python の代入(=)は文であり、代入の結果を式として評価することができませんでしたが、= の代わりに := を用いることで代入の結果を式として評価することが可能となりました。:= がセイウチの目と牙に似ていることからセイウチ演算子とも呼ばれます。

Python 3.10~
s = "ABCDEF"

if (len := len(s)) > 5:
    print("LONG")
else:
    print("SHORT")

行列積(@)

@ は Python 3.5 で導入された行列積演算子です。numpy の np.dot(A, B) の代わりに A @ B と記述できるようになりました。

Python 3.5~
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
# [[1*5+2*7=19, 1*6+2*8=22], [3*5+4*7=43, 3*6+4*8=50]]
print(np.dot(A, B))     # [[19, 22], [43, 50]]
print(A @ B)            # [[19, 22], [43, 50]]

優先順位

演算子の優先順位は下記のようになります。

演算子説明
(expr, ...), [expr, ...], {key: value, ...}, {expr, ...}結合式、括弧式、リスト、辞書、集合
x[n], x[n:m], x(arg...), x.attr添字指定、スライス操作、呼び出し、属性参照
await xAwait 式
**べき乗
+x, -x, ~x正数、負数、ビット演算(NOT)
*, @, /, //, %乗算、行列乗算、除算、切り捨て除算、剰余
+, -加算および減算
<<, >>シフト演算
&ビット単位(AND)
^ビット単位(XOR)
|ビット単位(OR)
in, not in, is, is not, <, <=, >, >=, !=, ==所属や同一性のテストを含む比較
not xブール演算(NOT)
andブール演算(AND)
orブール演算(OR)
if ... else条件式
lambdaラムダ式
:=代入式

Copyright(C) 2014-2022 杜甫々
初版:2014年12月30日、最終更新:2022年10月9日
http://www.tohoho-web.com/python/operators.html