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()が効率的です。用途に応じて、インデックス付きの逆順処理やスライス操作を使い分けるとよいでしょう。