目的
この記事では、Pythonで使用する複合代入演算子について基本的な使い方を記載する。
複合代入演算子の種類
代入演算子には、一般的な右辺から左辺へ代入する代入演算子(=)と右辺から左辺へ算術演算子を添えて代入する複合代入演算子(+=, -=など)がある。
- 複合代入演算子一覧
演算子 使用例 説明 += a += b a = a + b と同義。
( a に b を加算した結果を a に代入 )-= a -= b a = a - b と同義。
( a から b を減算した結果を a に代入 )*= a *= b a = a * b と同義。
( a に b を乗算した結果を a に代入 )/= a /= b a = a / b と同義。
( a を b で除算した結果を a に代入 )//= a //= b a = a // b と同義。
( a を b で整数除算した結果を a に代入 )%= a %= b a = a % b と同義。
( a と b で剰余した結果を a に代入 )**= a **= b a = a ** b と同義。
( a を b でべき乗した結果を a に代入 )
以降、簡単な実装サンプルを対話モード(インタプリタ)で解説する。
※ 演算結果の 最大値、最小値 についてはPCのスペックに依存する。詳しくは下記を参考。
- Python - 組込みデータ型まとめ : bool , int, float, complex > int型 : 数値(整数)
- Python - 組込みデータ型まとめ : bool , int, float, complex > float型 : 浮動小数点数型
- Python - 組込みデータ型まとめ : bool , int, float, complex > complex型 : 複素数型
加算(+=)・減算(-=)
-
加算(+=)
※ a = a + b と同義(簡略表記したもの)$ python >>> # int型の 2 に 3 を加算複合代入 >>> int_a = 2 >>> int_a += 3 >>> print(int_a) 5 >>> # float型の 3.5 に 3.6 を加算複合代入 >>> float_a = 3.5 >>> float_a += 3.6 >>> print(float_a) 7.1 >>> # complex型の 4 + 4j に 5 + 5j を加算複合代入 >>> complex_a = 4 + 4j >>> complex_a += 5 + 5j >>> print(complex_a) (9+9j) >>>
-
減算(-=)
※ a = a - b と同義(簡略表記したもの)$ python >>> # int型の 5 に 3 を減算複合代入 >>> int_a = 5 >>> int_a -= 3 >>> print(int_a) 2 >>> # float型の 5.0 に -5.9 を減算複合代入 >>> float_a = 5.0 >>> float_a -= -5.9 >>> print(float_a) 10.9 >>> # complex型の 5 + 5j に 10 + 10j を減算複合代入 >>> complex_a = 5 + 5j >>> complex_a -= 10 - 10j >>> print(complex_a) (-5+15j) >>>
乗算(*=)・除算(/=・//=)・剰余(%=)
-
乗算(*=)
※ a = a * b と同義(簡略表記したもの)$ python >>> # int型の 2 に 3 を乗算複合代入 >>> int_a = 2 >>> int_a *= 3 >>> print(int_a) 6 >>> # float型の 2.5 に -3.0 を乗算複合代入 >>> float_a = 2.5 >>> float_a *= -3.0 >>> print(float_a) -7.5 >>> # complex型の 5 + 2j に 2 - 5j を乗算複合代入 >>> complex_a = 5 + 2j >>> complex_a *= 2 - 5j >>> print(complex_a) (20-21j) >>>
-
除算(/=)
※ a = a / b と同義(簡略表記したもの)$ python >>> # int型の 6 に 2 を除算複合代入 >>> int_a = 6 >>> int_a /= 2 >>> print(int_a) 3.0 >>> # float型の 5.5 に -0.5 を除算複合代入 >>> float_a = 5.5 >>> float_a /= -0.5 >>> print(float_a) -11.0 >>> # complex型の 2 + 2j に 1 + 1j を除算複合代入 >>> complex_a = 2 + 2j >>> complex_a /= 1 + 1j >>> print(complex_a) (2+0j) >>>
-
除算(//=) ※商のみ
※ a = a // b と同義(簡略表記したもの)$ python >>> # int型の 11 に 3 を除算(//)複合代入 >>> int_a = 11 >>> int_a //= 3 >>> print(int_a) 3 >>> # float型の 3.3 に 0.2 を除算(//)複合代入 >>> float_a = 3.3 >>> float_a //= 0.2 >>> print(float_a) 16.0 >>> # complex型の除算(//)はできない >>> complex_a = 3 + 3j >>> complex_a //= 2 + 2j Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can't take floor of complex number. >>>
-
剰余(%=)
※ a = a % b と同義(簡略表記したもの)$ python >>> # int型の 9 に 2 を剰余複合代入 >>> int_a = 9 >>> int_a %= 2 >>> print(int_a) 1 >>> # float型の 6.5 に 2 を剰余複合代入 >>> float_a = 6.5 >>> float_a %= 2 >>> print(float_a) 0.5 >>> # complex型に剰余はできない >>> complex_a = 3 + 3j >>> complex_a %= 2 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can't mod complex numbers. >>>
べき乗(**=)
※ a = a ** b と同義(簡略表記したもの)
$ python
>>> # int型の 2 に 4 をべき乗複合代入
>>> int_a = 2
>>> int_a **= 4
>>> print(int_a)
16
>>> # float型の 2.5 に 2 をべき乗複合代入
>>> float_a = 2.5
>>> float_a **= 2
>>> print(float_a)
6.25
>>> # complex型の 2 + 2j に 2 をべき乗複合代入
>>> complex_a = 2 + 2j
>>> complex_a **= 2
>>> print(complex_a)
8j
>>>
参考文献
- 金城 俊哉(2018)『現場ですぐに使える! Pythonプログラミング逆引き大全313の極意』株式会社昭和システム