【Python】インクリメント
プログラミングでは変数の値を 1 つだけ増やすインクリメント(increment)という処理を行なうことがよくあります。たとえば次のようなコードを書けば、変数 a の値をインクリメントできます。
# PYTHON_INCREMENT # In[1] a = 10 # 変数aの値をインクリメント a = a + 1 print(a) # 11
上のコードでは最初に変数 a に値を入れておいてから、次の行で自身に 1 を加えた値をあらためて a に入れています。Python には C や Java で用いられる「++」のようなインクリメント演算子はありませんが、累算代入演算子を使ってインクリメントできます。
# In[2] a = 10 # 変数aの値をインクリメント a += 1 print(a) # 11
インクリメントを応用してみましょう。リストを渡して、任意のインデックスの要素をインクリメントする関数です。
# In[3] # リストの指定要素をインクリメントする関数 def increment(x, idx): for i in idx: x[i] += 1 # [0, 10, 20, 30, 40, 50, 60, 70, 80, 90] numbers = list(range(0, 100, 10)) # 奇数連番 # [1, 3, 5, 7, 9] idx = list(range(1, 10, 2)) # numbersの奇数インデックスの要素をインクリメント increment(numbers, idx) print(numbers) # [0, 11, 20, 31, 40, 51, 60, 71, 80, 91]
【Python】デクリメント
変数の値を 1 つだけ小さくすることをデクリメント (decrement)といいます。Python には「–」のようなデクリメント演算子はありませんが、累算代入演算子「-=」を使ってデクリメントできます。
# PYTHON_DECREMENT # In[1] a = 10 # 変数aの値をデクリメント a -= 1 print(a) # 9
デクリメントの応用です。リストの全要素をデクリメントする関数を定義してみます。
# In[2] # リストのすべての要素をデクリメントする関数 def decrement(x): for i in range(len(x)): x[i] -= 1 # [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] numbers = list(range(10, 101, 10)) # numbersのすべての要素をデクリメント decrement(numbers) print(numbers) # [9, 19, 29, 39, 49, 59, 69, 79, 89, 99]
コメント
Python を扱ったサイトをあちこちググってみると、「 += 」の名称が複合演算子と書いてあったり、複合代入演算子、あるいは累算代入演算子となっていたりと、どうも用語が統一されていないようです。アメリカ人が書いた本を読んでみると、
「こういう短縮された文法がある」
と書かれていました … た、短縮された文法って … せめて何か呼び名をつけてあげようよ … まあ、この記号に正式名称があるのかないのか、いまだ定かではないのですけれど、当サイトでは「代入を実行する演算子」であることがはっきりとわかるように、累算代入演算子と記述することにしています。
【お知らせ】記事を書き直しました。累算代入演算子の項目を省き、内容をインクリメントとデクリメントに絞りました。応用コードも加筆しました。累算代入演算子は別記事の「代入演算子」で改めて解説する予定です。