Python

【Python】インクリメント・デクリメントをする方法

この記事では、Pythonでインクリメント・デクリメントする方法を解説します。Pythonでは、他のプログラミング言語で使っていた++--演算子が使用できません。なので、代入演算子を使ってインクリメントやデクリメントを代用しましょう!

インクリメントの代用方法

インクリメントを代用するには、以下のように代入演算子+=を使うことで1行で表現することができます。

inc = 0

inc += 1
print(inc)

inc += 1
print(inc)

実行結果

1
2

デクリメントの代用方法

デクリメントを代用するには、以下のように代入演算子-=を使います。

dec = 0

dec -= 1
print(dec)

dec -= 1
print(dec)

実行結果

-1
-2

for文の違い

C言語のfor文では、以下のようにインクリメント・デクリメントを使ってループ処理していました。

int main() 
{
  for(int i = 0; i < 5; i++)
  {
    printf("%d\n", i);
  }
}

実行結果

0
1
2
3
4

上記のコードをPythonで記述すると以下のようになります。

for i in range(5):
    print(i)

実行結果

0
1
2
3
4

このように、Pythonではインクリメント・デクリメントを使わずにループ処理を実装することができます。

【Python】for文の使い方【ループ処理】この記事では、Pythonのfor文の使い方を解説します。for文を使うことでイテラブルの要素を1つずつ取り出し、for文ブロック内を繰り返し(ループ)処理することができます。それでは、for文の使い方を見ていきましょう!...

同様にデクリメントも可能です。

for i in range(5, 0, -1):
    print(i)

実行結果

5
4
3
2
1
【Python】range関数を使って数列を生成する方法を解説この記事では、Pythonのrange()関数の使い方について解説します。range()関数を使うことで任意の範囲の連続した数列を生成できます。生成した数列をfor文に渡すことで任意の回数だけループ処理することができます。それでは、range()関数の使い方を見ていきましょう!...

クラスの特殊メソッドを使う

単項演算子用の特殊メソッドを定義することでインクリメント・デクリメントを実装することもできます。

class Num:
    def __init__(self, num):
        self.num = num
    
    # 特殊メソッド(+instance)
    def __pos__(self):
        print('インクリメント')
        self.num += 1
        return self.num

    # 特殊メソッド(-instance)
    def __neg__(self):
        print('デクリメント')
        self.num -= 1
        return self.num

# インスタンス化
zero = Num(0)

# インクリメント
+zero
print(f'zero.num = {zero.num}')

# デクリメント
-zero
print(f'zero.num = {zero.num}')

実行結果

インクリメント
zero.num = 1
デクリメント
zero.num = 0

クロージャを使う

クロージャを使うことで、その関数を呼び出すたびに値をインクリメント・デクリメントさせるカウンターを作成することができます。

インクリメント

def inc():
    count = 0
    def inner_func():
        nonlocal count
        count += 1
        return count
    return inner_func

i = inc()

print(i())
print(i())
print(i())

実行結果

1
2
3

デクリメント

def dec():
    count = 0
    def inner_func():
        nonlocal count
        count -= 1
        return count
    return inner_func

i = dec()

print(i())
print(i())
print(i())

実行結果

-1
-2
-3
【Python】関数内の関数【内部関数とクロージャ】この記事では、Pythonの関数内の関数である「内部関数」とそれを応用した「クロージャ」について解説します。 内部関数とは Pyth...
最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』