・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2024年02月23日に投稿されました。)
PythonでList(リスト)の要素を逆に並び替えるにはreverse()使用します。
reverse()とは、オブジェクトを逆順に並び替える関数になります。
そのため、List(リスト)に対して使用することでリストの末尾から順番に要素を並び替えることができます。
そしてreverse()は1次元List(リスト)だけでなく、2次元List(リスト)や3次元List(リスト)のような多次元リストにも要素を追加したりすることができます。
しかし、reverse()を使用したデータは参照渡しとなるため、注意して使用するようにしましょう。
今回はPythonのreverse()でList(リスト)に要素を逆順に並び替える方法について紹介していきます。
List(リスト)の要素の格納順を逆にして並べ替えたい場合
reverse()とは
reverse()とはオブジェクトを逆順に並び替える関数になります。
そのため、List(リスト)に対して使用するとリスト内の要素を逆順に並び替えます。
reverse()の書き方
reverse()の書き方は下記のようになります。
1 | 対象のList(リスト).reverse() |
対象のList(リスト)の後ろにreverse()と追記することで使用することができます。
reverse()の返り値
reverse()の返り値はありません。
reverse()でList(リスト)の要素を逆順に並び替えるサンプルコード
reverse()でList(リスト)の要素を逆順に並び替えるサンプルコードをご紹介します。
ここでは下記の2パターンでreverse()を使用します。
- List(リスト)に要素が存在する場合
- List(リスト)に要素が存在しない場合
List(リスト)に要素が存在する場合
List(リスト)に要素が存在する場合にreverse()を使用すると、List(リスト)内の要素を逆順に並び替えます。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | print('● 対象のリスト-1') list1 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list1) print("● reverse()使用後-1") list1.reverse() print(list1) print('● 対象のリスト-2') list2 = [175, 346, 678, 968, 258, 2] print(list2) print('● reverse()使用後-2') list2.reverse() print(list2) |
実行結果
reverse()でList(リスト)の要素を逆順に並び替えています。
そのため、List(リスト)の末尾要素から順番に並び替えられています。
List(リスト)に要素が存在しない場合
List(リスト)に要素が存在しない場合にreverse()を使用すると、空のList(リスト)がそのまま返されます。
● main.py
1 2 3 4 5 6 7 | print('● 対象のリスト') list1 = [] print(list1) print('● reverse()使用後') list1.reverse() print(list1) |
実行結果
reverse()でList(リスト)の要素を逆順に並び替えています。
今回はList(リスト)に要素が存在しないため、空のList(リスト)が表示されています。
reverse()で多次元List(リスト)から指定した要素を追加するサンプルコード
reverse()は1次元リストだけでなく、多次元List(リスト)の要素を追加することもできます。
しかし。、多次元List(リスト)の場合はリストの中にリストが存在するため、繰り返し処理で深い階層にアクセスして処理を行う必要があります。
そのため、ここではreverse()で多次元List(リスト)から指定した要素を追加するサンプルコードをご紹介します。
2次元List(リスト)の場合
2次元List(リスト)に対してreverse()を使用します。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | print('● 対象の2次元リスト') list1 = [ [1, 2, 3, 4, 5], [10, 20, 30, 40, 50], [100, 200, 300, 400, 500], [1000, 2000, 3000, 4000, 5000] ] print(list1) print('● reverse()使用後-1') for list1_n in list1: list1_n.reverse() print(list1) print('● reverse()使用後-2') list1_reverse = list1.reverse() print(list1) |
実行結果
reverse()で2次元List(リスト)の要素を逆順に並び替えています。
そのため、2次元List(リスト)内にある各1次元List(リスト)の要素が末尾から順番に並び替えられています。
また、2次元List(リスト)の要素が末尾から順番に並び替えられています。
3次元List(リスト)の場合
3次元List(リスト)に対してreverse()を使用します。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | print('● 対象の3次元リスト') list1 = [ [['JavaScript', 'C#', 'PHP'],['Python', 'Swift', 'Java']], [['Node.js', 'ASP.NET', 'CakePHP'],['flask', 'perfect', 'spring' ]] ] print(list1) print('● reverse()使用後-1') for list1_n in list1: for list1_nm in list1_n: list1_nm.reverse() print(list1) print('● reverse()使用後-2') for list1_n in list1: list1_n.reverse() print(list1) print('● reverse()使用後-3') list1.reverse() print(list1) |
実行結果
reverse()で3次元List(リスト)の要素を逆順に並び替えています。
そのため、3次元List(リスト)内にある各1次元List(リスト)の要素が末尾から順番に並び替えられています。
そして3次元List(リスト)内に各の2次元List(リスト)の要素が末尾から順番に並び替えられています。
また、3次元List(リスト)の要素が末尾から順番に並び替えられています。
reverse()を使用する際の注意点
先ほどまでreverse()でList(リスト)の要素を逆順に並び替えましたが、使用する際に注意点があります。
それは、reverse()を使用したList(リスト)は参照渡しになるということです。
例えば下記のコードのように、対象のList(リスト)を別の変数に格納し、その後でreverse()を使用します。
● main.py
1 2 3 4 5 6 7 8 9 10 11 | print('● 対象のリスト-1') list1 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list1) print("● reverse()使用後-1") list1_bk = list1 list1.reverse() print(list1) print("● 元のリスト") print(list1_bk) |
実行結果
reverse()を使用する前に「list_bk」へ格納したため、通常なら「list_bk」には元の順番のリストが格納されているかと思います。
しかし、「list_bk」の中身を見ると、reverse()で逆順に並び替えられたList(リスト)が格納されています。
reverse()を使用するとコピーするではく、参照を行うため、reverse()を使用したデータを参照しているデータは全て影響を受けてしまいます。
以上のことから、reverse()を使用すると参照渡しになるため、注意してください。
reverse()で要素を逆順に並び替えた実際のケース
reverse()を使用した実際のケースについてご紹介します。
例えば、reverse()を使用して登録ユーザのリストを新しく登録されたユーザー順に並び替えるような作成します。
● index.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <!DOCTYPE html> <html lang="ja"> <head> <title>reverse()でList(リスト)から対象の要素を追加する</title> <meta charset="utf-8"/> </head> <body> <h2>登録ユーザー</h2> <div> <form action="/" method="POST"> <ul> {% for reg_user in register %} <li>{{ reg_user }}</li> {% endfor %} </ul> <button type="submit">並び替え</button> </form> </div> <style> li { font-weight: bold; border-bottom: 2px solid lightgray; } </style> </body> </html> |
● result.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!DOCTYPE html> <html lang="ja"> <head> <title>reverse()でList(リスト)から対象の要素を追加する</title> <meta charset="utf-8"/> </head> <body> <h2>登録ユーザー</h2> <div> <ul> {% for reg_user in register %} <li>{{ reg_user }}</li> {% endfor %} </ul> </div> <style> li { font-weight: bold; border-bottom: 2px solid lightgray; } </style> </body> </html> |
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | from flask import Flask, render_template app = Flask(__name__) reg_list = ['ボブ' ,'マイケル' , 'ジョージ' , 'グリーン' , 'ナンシー' , 'エレン', 'エマ', 'オリヴァ'] @app.route('/') def index(): return render_template('index.html', register = reg_list) @app.route('/', methods=['POST']) def result(): try: reg_list.reverse() except Exception as e: print(e) finally: return render_template('result.html', register = reg_list) if __name__ == '__main__': app.run() |
実行結果
reverse()でユーザー登録の順番を並び替えています。
今回は、登録された順番でList(リスト)に格納されているため、最新のユーザが末尾に格納されているようになります。
そのため、並び替えのボタンを押すと、最新のユーザーが一番上に並び替られて表示されています。
reverse()以外でList(リスト)の要素を逆順に並び替える方法の一覧
Pythonではreverse()以外にもでList(リスト)の要素を逆順に並び替える方法が存在します。
そのため、ここではreverse()以外でList(リスト)の要素を逆順に並び替える方法の一覧についてご紹介します。
reversed()
reversed()とは対象のイテレータの要素を逆順に並び替えたイテレータを作成する関数になります。
今回ご紹介しているreverse()と同じ処理になりますが、対象のリストを直接並び替えるのではなく、逆順に並び替えたリストを新たなList(リスト)として作成します。
そのため、reversed()は元のList(リスト)のデータを壊さない非破壊的な関数となります。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | print('● 対象のリスト-1') list1 = [175, 346, 678, 968, 258, 2] print(list1) print('● reversed()使用後-1') list1_reversed = list(reversed(list1)) print(list1_reversed) print('● 元のリスト-1') print(list1) print('● 対象のリスト-2') list2 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list2) print("● reversed()使用後-2") list2_reversed = list(reversed(list2)) print(list2_reversed) print('● 元のリスト-2') print(list2) |
実行結果
reversed()でList(リスト)の要素を逆順に並び替えています。
そのため、対象のList(リスト)の要素を末尾から順番に並び替えたリストが表示されています。
for文(for-in)とrange()
for文(for-in)とは繰り返し処理を行うための構文で、range()とは連番を生成するためのオブジェクトとなります。
for文(for-in)とrange()で繰り返し処理を行うことでList(リスト)の要素を逆順に並び替えることができます。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | print('● 対象のリスト-1') list1 = [175, 346, 678, 968, 258, 2] print(list1) print("● 繰り返し処理使用後-1") list1_rev = dict() for cnt in range(len(list1)): list1_rev[cnt] = list1[len(list1)-(cnt + 1)] print(list(list1_rev.values())) print('● 対象のリスト-2') list2 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list2) print("● 繰り返し処理使用後-2") list2_rev = dict() for cnt in range(len(list2)): list2_rev[cnt] = list2[len(list2)-(cnt + 1)] print(list(list2_rev.values())) |
実行結果
for文(for-in)とrange()でList(リスト)の要素をList(リスト)の要素を逆順に並び替えています。
今回はの処理は下記のような流れとなります。
- 辞書型の「listN_rev」を作成する
- for文for-in)とrange()でリストの長さ分、「3」の処理を繰り返して行う
- listN_revのキーを「カウント数」、値を「リストの要素」として末尾から順番に格納していく
- listN_revの値のみをリスト化にする
そのため、対象のList(リスト)の要素を末尾から順番に並び替えたリストが表示されています。
スライス
スライスとはList(リスト)や文字列などから部分的にデータを取り出す機能になります。
ステップに負の値を指定することでList(リスト)の要素を逆順に並び替えることができます。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | print('● 対象のリスト-1') list1 = [175, 346, 678, 968, 258, 2] print(list1) print("● スライス使用後-1") list1_slice = list1[::-1] print(list1_slice) print('● 対象のリスト-2') list2 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list2) print("● スライス使用後-2") list2_slice = list2[::-1] print(list2_slice) |
実行結果
スライスでList(リスト)の要素をList(リスト)の要素を逆順に並び替えています。
そのため、対象のList(リスト)の要素を末尾から順番に並び替えたリストが表示されています。
reverse()で文字列を逆順に並び替える場合
reverse()で文字列を逆順に並び替えるにはjoin()と組み合わせて使用します。
join()とはオブジェクトの要素を結合して文字列に変換する関数になります。
並び替えたList(リスト)に対してjoin()で結合することで文字列を逆順に並び替えることが可能になります。
● main.py
1 2 3 4 5 6 7 8 9 | print('● 対象の文字列') text1 = 'るえ替び並に順逆を列字文で)(esrever' print(text1) print("● reverse()使用後-1") textTolist = list(text1) textTolist.reverse() text1_rev = ''.join(textTolist) print(text1_rev) |
実行結果
reverse()とjoin()で文字列を逆順に並び替えています。
そのため、「reverse()で文字列を逆順に並び替える」という文字列になって表示されています。
まとめ
● reverse()とはオブジェクトの要素を逆順に並び替える関数である。
● reverse()を使用する場合は、対象のList(リスト)の後ろにreverse()と追記する。
● List(リスト)に要素が存在する場合にreverse()を使用すると、要素を逆順にして並び替える。
● List(リスト)がに要素が存在しない場合にreverse()を使用すると、処理は行われるが空のList(リスト)がそのまま返される。
● reverse()は1次元(List)リストだけでなく、多次元List(リスト)に対しても使用できる。
● reverse()を使用する際の注意点として「参照渡しになる」という点がある。
(reverse()を使用する前に別のリストに格納したリストにも影響を及ぼしてしまう)
● Pyhtonでリストの要素を逆順に並び替えるにはreverse()以外にも下記のような方法がある。
・reversed()
(対象のイテレータの要素を逆順に並び替えたイテレータを作成する関数)
・for文(for-in)とrange()
・スライス
(List(リスト)や文字列などから部分的にデータを取り出す機能)
● reverse()を文字列に対して使用するにはjoin()と組み合わせて使用する。