この記事では、Python でインクリメント・デクリメントする方法を解説します。
インクリメントとは、数値に 1 足すことを言います。逆に 1 減らすことをデクリメントと言う。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 ではインクリメント・デクリメントを使わずにループ処理を実装することができます。
同様にデクリメントも可能です。
for i in range(5, 0, -1):
print(i)
実行結果
5
4
3
2
1
クラスの特殊メソッドを使う
単項演算子用の特殊メソッドを定義することでインクリメント・デクリメントを実装することもできます。
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