Pythonでは、リストを逆順で走査するためのいくつかの方法があります。基本的な方法から応用まで、順に紹介します。
reversed()関数を使う方法
最もシンプルな方法は、Python標準のreversed()関数を使うことです。この関数はリストをその場で逆順にしませんが、逆順で要素を返すイテレータを生成します。
a = ["foo", "bar", "baz"]
for item in reversed(a):
print(item)
# 出力: baz, bar, foo
インデックス付きで逆順走査 - enumerate()とreversed()
逆順で走査しつつ、インデックスも必要な場合は、enumerate()とreversed()を組み合わせます。
for i, e in reversed(list(enumerate(a))):
print(i, e)
# 出力: 2 baz, 1 bar, 0 foo
ここではenumerate()でインデックスを取得し、reversed()で順序を逆にしています。
スライス操作 [::-1] の使用
スライス操作を使うと、リスト全体を逆順にすることができます。この方法は、新しいリストを返し、元のリストには影響を与えません。
a = ["foo", "bar", "baz"]
for item in a[::-1]:
print(item)
# 出力: baz, bar, foo
range()を使った逆順ループ
リストの長さを基にrange()を使う方法もあります。これはリストの最後のインデックスから順にアクセスします。
for i in range(len(a)-1, -1, -1):
print(a[i])
# 出力: baz, bar, foo
まとめ
リストを逆順で走査するには、reversed()や[::-1]が一般的で、特に大規模なデータ処理ではイテレータを返すreversed()が効率的です。用途に応じて、インデックス付きの逆順処理やスライス操作を使い分けるとよいでしょう。