MENU
Python

【Python】リスト含むシーケンスの要素を逆順にする方法

この記事では、Pythonの配列の要素を逆順する方法を解説します。

並び替え(ソート)をしたい場合は、以下の記事を参考にしてください。

リストやイテラブルの要素を昇順・降順で並び替える【ソート】

それでは、配列を逆順にする方法を見ていきましょう。

リストを逆順にする

リストの要素を逆順にするにはreverse()メソッドを使います。

sequence.reverse()
自身を逆順にする点に注意してください

試しにリストを生成してrevese()メソッドを実行してみます。

# リストの生成
l = [1, 2, 3]

# reveseメソッドで逆順
l.reverse()
print(f'元のオブジェクト : {l}')

実行結果

元のオブジェクト : [3, 2, 1]

逆順は取得したいけど元のオブジェクトは並び替えたくない場合は、次の章で解説するreversed()関数かスライスを使いましょう!

要素を逆順に取り出すイテレータを生成する

リスト以外の配列を逆順にする方法も用意されています。また、リストを逆順にする際に元のオブジェクトを並び替えたくない場合もこちらの方法を使います。

reversed()関数

組み込み関数のreversed()関数を使うことで要素を逆順に取り出すイテレータを新しく生成することができます。戻り値はreverse iteratorとして返される。

l = [1, 2, 3]

# 逆順で要素を取り出すイテレータを生成
r_l = reversed (l)

print(r_l)

実行結果

<list_reverseiterator object at 0x10cfb4df0>

リストやタプルとして使用したい場合はキャストしましょう。

l = [1, 2, 3]

# 逆順で要素を取り出すイテレータを生成
r_l = reversed(l)

# リストに変換
print(list(r_l))

実行結果

[3, 2, 1]

reversed()関数は、__reversed__()メソッドが定義されているオブジェクトやシーケンス型プロトコルをサポートするオブジェクトに使用可能です。

例えば、辞書でも可能です。

d = {'a': 1, 'b': 2, 'c': 3}

# 逆順で要素を取り出すイテレータを生成
r_keys = reversed(d)
r_values = reversed(d.values())
r_items = reversed(d.items())

# リストに変換
print(list(r_keys))
print(list(r_values))
print(list(r_items))

実行結果

['c', 'b', 'a']
[3, 2, 1]
[('c', 3), ('b', 2), ('a', 1)]

Linkreversed(seq) - 組み込み関数 — Python ドキュメント

スライス

また、スライスのstep-1を指定することでも逆順で要素を取得できる。

sequence[::-1]

シーケンスの要素を任意の範囲で取得するスライスの使い方

リストを逆順にしたオブジェクトを生成して元のオブジェクトと比べてみます。

l = [1, 2, 3]

# スライスで逆順にする
r_l = l[::-1]
print(r_l)

実行結果

[3, 2, 1]

スライスを使った場合は型変換は必要ない。

まとめ

この記事では、Pythonの配列の要素を逆順する方法を解説しました。

リスト自身を逆順にするにはreverse()メソッド、その他の配列から要素を逆順に取得できるイテレータを生成するにはreversed()関数、またはスライスを使います。

色々用意されているので簡単ですね!

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ