Pythonにインクリメント・デクリメント演算子はない?代わりの書き方を徹底解説
この記事では、Pythonにおけるインクリメント(増加)とデクリメント(減少)の実装方法について詳しく解説します。
Pythonには「++」「--」演算子が存在しない
C言語やJava、JavaScriptなどの多くのプログラミング言語には、値を1だけ増減させるための前置・後置インクリメント演算子(++)やデクリメント演算子(--)が用意されています。しかし、Pythonにはこれらの演算子は存在しません。
これは「明示的であることが暗黙的であるよりも良い(Explicit is better than implicit)」というPythonの設計思想によるもので、コードの可読性を重視するためです。とはいえ、Pythonでも以下のような方法で同じ処理を簡単に実現できます。
代入演算子を使った増減処理
最も基本的な方法は、通常の加算・減算、または複合代入演算子(+=、-=)を使うことです。
x = 786 x = x + 1 print(x) # 787 x += 1 print(x) # 788 x = x - 1 print(x) # 787 x -= 1 print(x) # 786
実行結果:
787 788 787 786
x += 1はx = x + 1と完全に同じ意味を持ちます。Pythonではこちらの書き方が推奨されており、簡潔かつ読みやすいコードになります。
forループでのカウントアップ・カウントダウン
他の言語では、forループの中でインクリメント・デクリメント演算子をよく使います。Pythonでは、range()関数を利用することで同様の処理を行えます。range()関数のデフォルトの増分値は「1」ですが、第3引数で任意のステップ数を指定することも可能です。
# 増分はデフォルトの1
for i in range(0, 5):
print(i)
# 増分を2に指定
for i in range(0, 5, 2):
print(i)実行結果:
0 1 2 3 4 0 2 4
また、第3引数に負の値を指定すれば、カウントダウン処理も実現できます。
for i in range(5, 0, -1):
print(i) # 5, 4, 3, 2, 1 の順に出力されるまとめ
この記事では、Pythonに++や--といった演算子が存在しないこと、そしてその代替として+=や-=といった複合代入演算子、さらにrange()関数のステップ指定を使うことで、同様の処理をシンプルに記述できることを学びました。Pythonらしい明快なコードを書くために、ぜひこれらの方法を活用してください。
-
Pythonで++や--演算子はどう動く?インクリメントができない理由と正しい代替方法
Pythonには++や--という演算子は存在しないC/C++やJavaなどの言語では、++と--はそれぞれ「1を加える」「1を引く」ためのインクリメント・デクリメント演算子として定義されています。しかし、Pythonではこれらは演算子として定義されていません。その理由はPythonの設計思想にあります。Pythonではすべてのオブジェクトがメモリ上に格納され、変数はそのオブジェクトを指す「名前(ラベル)」にすぎません。さらに、数値オブジェクトはイミュータブル(不変)であるため、後から値を直接書き換えることができません。このため、C言語スタイルのa++のような演算子は採用されていないのです。前置
-
Pythonで++や--演算子が使えない理由と正しい代替方法
Pythonでは++演算子が使えない C言語、C++、Javaなどの多くのプログラミング言語では、「++」および「--」演算子を使って変数の値を1ずつ増加・減少させることができます。しかし、Pythonにはこれらのインクリメント・デクリメント演算子は存在しません。 なぜ++演算子は動作しないのか その理由は、Pythonの変数の仕組みにあります。Pythonにおいて、変数とはメモリ上のオブジェクトに対する「ラベル(名札)」にすぎません。さらに、Pythonの数値オブジェクトはイミュータブル(不変)です。 したがって、a = 10 の状態で「a++」と書くと、これはオブジェクト「10」自体の値