Pythonでリストを逆順に反復処理する3つの方法
プログラミングをしていると、リストの要素を後ろから順に処理したい場面があります。その場合、最後の要素から読み始め、末尾から2番目、さらにその前というように、インデックス0の要素まで処理を進めていきます。Pythonにはこの目的を達成するためのさまざまな機能が用意されており、本記事では代表的な3つの方法をサンプルコードとともにわかりやすく解説します。
range(N, -1, -1) を使う方法
range関数を使用する際、開始位置として「リストの長さ - 1」を指定し、終了位置を -1、ステップを -1 に設定します。こうすることで、最後のインデックスから先頭に向かって1つずつ減らしながら要素を読み取ることができます。以下の例では、リストの長さをもとに開始位置を算出し、最後の位置から -1 ステップずつ逆方向に反復しています。
サンプルコード
list = ['Mon', 'Tue', 'Wed', 'Thu']
for i in range( len(list) - 1, -1, -1) :
print(list[i])
実行結果
上記のコードを実行すると、次のような出力が得られます。
Thu Wed Tue Mon
スライス [::-1] を使う方法
この方法では、リストのスライス構文を利用します。「[::-1]」は、リスト全体を末尾から先頭へ向かって逆順に取り出すことを意味します。forループと組み合わせることで、各要素を逆順に一つずつ取り出して処理することが可能です。
サンプルコード
list = ['Mon', 'Tue', 'Wed', 'Thu']
for i in list[::-1]:
print(i)
実行結果
上記のコードを実行すると、次のような出力が得られます。
Thu Wed Tue Mon
reversed() 関数を使う方法
reversed() 関数は非常にシンプルで、引数に渡したリストの要素を逆順に返すイテレータを生成します。これを for ループで回すだけで、要素を逆順に出力できます。コードの意図が伝わりやすく、最もPythonらしい書き方の一つと言えるでしょう。
サンプルコード
list = ['Mon', 'Tue', 'Wed', 'Thu']
for i in reversed(list) :
print(i)
実行結果
上記のコードを実行すると、次のような出力が得られます。
Thu Wed Tue Mon
まとめ
リストを逆順に反復処理する方法として、① range関数でインデックスを制御する方法、② スライス [::-1] を使う方法、③ reversed() 関数を使う方法の3つを紹介しました。それぞれ特徴が異なるため、コードの可読性や処理の目的に応じて適切に使い分けることで、より洗練されたPythonコードを書くことができます。
-
Pythonでリストに重複要素が含まれているかを判定する方法
数値のリストが与えられたとき、そのリストに重複した要素が含まれているかどうかを確認する必要があります。例えば、リストが [1,5,6,2,1,3] の場合、同じ「1」が2つ存在するため結果は True になります。一方、リストが [1,2,3,4] の場合は重複が存在しないため、結果は False となります。解決のアプローチこの問題は、Pythonの set(集合)データ構造の性質を利用することで簡単に解決できます。set は重複しない一意な値のみを保持するという特徴を持っています。一方、リストは重複した値を含むことが可能です。そこで、リストを set に変換すると、重複要素が存在する場合に
-
Pythonで逆順に反復処理する方法|range()関数の基本と実例
本記事では、Pythonにおける逆順(後方)の反復処理について解説します。普段のコーディングでは順方向の反復処理を使うことがほとんどですが、逆方向の反復処理を理解しておくと、場面によって大きな武器になります。ここでは、range()関数を使って逆方向に反復処理を行う方法を学びましょう。まずは、range()関数の基本から見ていきます。 range()関数とは range()関数は幅広い用途を持つ組み込み関数です。数値やイテラブルなど、さまざまなものと組み合わせて利用できますが、ここでは数値の扱いに焦点を当てます。 range()関数は最大3つの引数を受け取ることができ、引数の個数によって以下