Pythonで逆順に反復処理する方法|range()関数の基本と実例
本記事では、Pythonにおける逆順(後方)の反復処理について解説します。普段のコーディングでは順方向の反復処理を使うことがほとんどですが、逆方向の反復処理を理解しておくと、場面によって大きな武器になります。ここでは、range()関数を使って逆方向に反復処理を行う方法を学びましょう。まずは、range()関数の基本から見ていきます。
range()関数とは
range()関数は幅広い用途を持つ組み込み関数です。数値やイテラブルなど、さまざまなものと組み合わせて利用できますが、ここでは数値の扱いに焦点を当てます。
range()関数は最大3つの引数を受け取ることができ、引数の個数によって以下の3パターンの動作をします。
引数が1つの場合:その引数は上限値として扱われ、下限値はデフォルトで「0」、増分値はデフォルトで「1」となります。
引数が2つの場合:1つ目の引数が下限値、2つ目の引数が上限値として扱われ、増分値はデフォルトで「1」となります。
引数が3つの場合:1つ目の引数が下限値、2つ目の引数が上限値、3つ目の引数が増分値として扱われます。
逆順の反復処理では、この3つの引数すべてを使用します。
例1:10から0まで逆順に出力する
# 10から0まで逆順に繰り返すループ
# range(下限値, 上限値, 増分値)
for i in range(10, -1, -1):
# 値を出力
print(i)
出力結果
上記のプログラムを実行すると、次のような結果が得られます。
10 9 8 7 6 5 4 3 2 1 0
例2:リスト(イテラブル)を逆順に反復する
# リストの初期化
nums = ['Hafeez', 'Aslan', 'Kareem']
# リストの末尾から要素を出力するループ
for i in range(len(nums) - 1, -1, -1):
# リストの要素を出力
print(nums[i])
出力結果
プログラムを実行すると、リストの要素が末尾から順に出力されます。
Kareem Aslan Hafeez
補足:もっと簡潔に逆順処理を書く方法
range()関数以外にも、reversed()関数やスライス記法[::-1]を使えば、よりシンプルに逆順の反復処理を実現できます。
# reversed()関数を使った例
for item in reversed(nums):
print(item)
# スライス記法を使った例
for item in nums[::-1]:
print(item)
まとめ
Pythonで逆順に反復処理を行うには、range()関数に「開始値・終了値・負の増分値」の3つの引数を指定するのが基本です。状況に応じてreversed()関数やスライス記法も活用すると、コードがさらに読みやすくなります。本チュートリアルについて質問がある場合は、コメント欄でお気軽にお尋ねください。
-
Pythonプログラムの実行方法まとめ!IDLE・コマンドライン・PyCharmなど5つの方法を解説
コードを書いたら、次はそれを実行して出力結果を確認する必要があります。プログラムを実行することで、書いたコードが正しく動作し、期待通りの結果が得られるかどうかをチェックできます。幸いなことに、Pythonプログラムの実行はとても簡単です。この記事では、代表的な5つの実行方法をわかりやすく解説します。IDLEで実行するPythonに標準で付属しているIDLEを使ってプログラムを実行するには、以下の手順に従います。Pythonのコードを書いて保存します。メニューから「Run > Run Module」を選択するか、キーボードのF5キーを押すだけで実行できます。IDLEは初心者にとって扱いやす
-
Pythonで二分探索木(BST)の指定範囲内にあるノード数を求める方法
問題の概要 二分探索木(BST)が与えられ、さらに左側の境界値 l と右側の境界値 r が指定されます。このとき、木に含まれるすべてのノードの中で、値が l 以上 r 以下の範囲内にあるノードの個数を求めるのが目的です。 例えば、次のような木が与えられたとします。 このとき l = 7、r = 13 とすると、範囲内に含まれるノードは 8、10、12 の3つなので、出力は 3 になります。 アルゴリズムの考え方 スタックを使った反復的な深さ優先探索(DFS)で木をたどります。重要なポイントは、二分探索木の性質を活かして枝刈り(pruning)を行うことです。値が境界より小さいノードの左側の