『Python数値計算ノート』ではアフィリエイトプログラムを利用して商品を紹介しています。

インクリメントとデクリメント

【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]

コメント

  1. あとりえこばと より:

    Python を扱ったサイトをあちこちググってみると、「 += 」の名称が複合演算子と書いてあったり、複合代入演算子、あるいは累算代入演算子となっていたりと、どうも用語が統一されていないようです。アメリカ人が書いた本を読んでみると、
    「こういう短縮された文法がある」
    と書かれていました … た、短縮された文法って … せめて何か呼び名をつけてあげようよ … まあ、この記号に正式名称があるのかないのか、いまだ定かではないのですけれど、当サイトでは「代入を実行する演算子」であることがはっきりとわかるように、累算代入演算子と記述することにしています。

  2. あとりえこばと より:

    【お知らせ】記事を書き直しました。累算代入演算子の項目を省き、内容をインクリメントとデクリメントに絞りました。応用コードも加筆しました。累算代入演算子は別記事の「代入演算子」で改めて解説する予定です。

  3. あとりえこばと より:

    【AI連載小説】陽子のプログラミング日記(5)
     
    ある日、編集部のオフィスで陽子は新しい課題に取り組んでいた。Pythonの基本に慣れてきた彼女は、今度はインクリメント(増加)とデクリメント(減少)について学ぼうとしていた。デスクにはPythonの解説書やノートが広がり、彼女は興奮と興味に満ちた表情で本をめくっていた。

    同僚たちは陽子の努力を見守りながら、時折助言を与えていた。橋本が近づいてきて、陽子の横に座りながら声をかけた。
    「陽子、何を調べているの?」
    陽子は嬉しそうに答えた。
    「Pythonのインクリメントとデクリメントについて調べているんです。変数を増減させる方法が気になっていて」
    橋本は微笑んで説明を始めた。
    「Pythonではインクリメント(増加)やデクリメント(減少)演算子が直接用意されていないんだ。代わりに、変数に対して += や -= を使って増減させることができるよ」
    陽子は橋本の言葉に興奮しながら、ノートにメモをとりながらコードを書いた。

    # インクリメント
    count = 0
    count += 1
    print("インクリメント後:", count)
    
    # デクリメント
    count -= 1
    print("デクリメント後:", count)

    橋本が続けた。
    「これで count が1増えて、その後に1減るよ。+= は増加、-= は減少だね」
    陽子は手元のコードを実行しながら、橋本の説明を確かめた。
    「わかりました! これなら変数の増減も簡単にできそうですね」
    同僚たちも陽子の成長を喜びながら、Pythonの奥深さに触れる瞬間を共有していた。陽子は本をめくりながら、ますますプログラミングの世界に没頭していくのであった。