・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2024年02月08日に投稿されました。)
PythonでList(リスト)から対象の要素を削除するにはpop()使用します。
pop()とは、イテレータから対象の値を取り除く関数になります。
対象の値を取り除くため、List(リスト)に対してpop()を使用することでリストから対象の要素を削除することができます。
そしてpop()は1次元List(リスト)だけでなく、2次元List(リスト)や3次元List(リスト)のような多次元リストからも要素を削除することができます。
また、パラメータを指定しなくてもList(リスト)の要素を削除できるためもし、List(リスト)から対象の要素を削除したいと思った場合はpop()を使用するようにしましょう。
今回はPythonのpop()でList(リスト)から対象の要素を削除する方法について紹介していきます。
List(リスト)から対象の要素を削除したい場合
pop()とは
pop()とはイテレータから対処の要素を取り除くことができる関数になります。
そのため、List(リスト)に対して使用することでリストから対象の要素を削除します。
pop()の書き方
pop()の書き方は下記のようになります。
1 | 対象のリスト.pop('インデックス') |
対象のリストの後ろにpop()と追記し、括弧の中に必須または任意のパラメータを指定することで使用することができます。
pop()のパラメータ
pop()のパラメータは下記のようになります。
- インデックス:(必須 or 任意)
List(リスト)から削除したい要素をインデックスで指定する。
pop()は必須または任意なパラメータとして「インデックス」を指定します。
pop()の返り値
pop()は返り値として削除した要素を返します。
pop()でリストから対象の要素を削除するサンプルコード
pop()でリストから対象の要素を削除するサンプルコードをご紹介します。
ここでは下記の4パターンでpop()を使用します。
- インデックスが正の数である場合
- インデックスが要素数より大きい場合
- インデックスが少数である場合
- インデックスが負の数である場合
インデックスが正の数である場合
インデックスに正の数を指定してpop()を使用すると、List(リスト)から対象の要素を削除します。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | print('● 対象のリスト-1') list1 = [175, 346, 678, 968, 258, 2] print(list1) print('● pop()使用後-1') list1_pop = list1.pop(0) print(list1) print('削除した要素: ' + str(list1_pop)) print('● 対象のリスト-2') list2 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list2) print("● pop()使用後-2") list2_pop = list2.pop(4) print(list2) print('削除した要素: ' + list2_pop) |
実行結果
pop()でList(リスト)から対象の要素を削除しています。
そのため、リストの1番目である「175」と5番目である「Java」が削除されています。
インデックスが要素数より大きい場合
インデックスに要素数よりも大きい数値を指定してpop()を使用すると、エラーが発生します。
● main.py
1 2 3 4 5 6 7 8 | print('● 対象のリスト-1') list1 = [175, 346, 678, 968, 258, 2] print(list1) print('● pop()使用後-1') list1_pop = list1.pop(10) print(list1) print('削除した要素: ' + str(list1_pop)) |
実行結果
pop()のインデックスに要素数より大きい数値を指定してリストから対象の要素を削除しています。
インデックスがリストの要素数をオーバーしているため、エラーが発生しています。
pop()は失敗するとエラーが発生するため、もし処理中に使用する場合には例外処理を追記しましょう。
インデックスが少数である場合
インデックスに少数を指定してpop()を使用すると、こちらもエラーが発生します。
● main.py
1 2 3 4 5 6 7 8 | print('● 対象のリスト-1') list1 = [175, 346, 678, 968, 258, 2] print(list1) print('● pop()使用後-1') list1_pop = list1.pop(3.6) print(list1) print('削除した要素: ' + str(list1_pop)) |
実行結果
pop()のインデックスに少数を指定してリストから対象の要素を削除しています。
インデックスに少数は存在しないため、エラーが発生しています。
インデックスが負の数である場合
インデックスに負の数を指定してにpop()を使用すると、リストの末尾から数えたインデックスの要素を削除します。
しかし、負の数の場合はスタートは0ではなく「-1」からになります。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | print('● 対象のリスト-1') list1 = [175, 346, 678, 968, 258, 2] print(list1) print('● pop()使用後-1') list1_pop = list1.pop(-2) print(list1) print('削除した要素: ' + str(list1_pop)) print('● 対象のリスト-2') list2 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list2) print("● pop()使用後-2") list2_pop = list2.pop(-3) print(list2) print('削除した要素: ' + list2_pop) |
実行結果
pop()のインデックスに負の数を指定してリストから対象の要素を削除しています。
今回は「-2」を指定したため、末尾から2番目の「258」が、「-3」を指定したため、末尾から3番目の「Python」が削除されています。
インデックスを指定しないでpop()を使用する場合
パラメータである「インデックス」を指定しないでpop()を使用すると、リストの末尾の要素を削除するようになります。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | print('● 対象のリスト-1') list1 = [175, 346, 678, 968, 258, 2] print(list1) print('● pop()使用後-1') list1_pop = list1.pop() print(list1) print('削除した要素: ' + str(list1_pop)) print('● 対象のリスト-2') list2 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list2) print("● pop()使用後-2") list2_pop = list2.pop() print(list2) print('削除した要素: ' + list2_pop) |
実行結果
pop()でパラメータを指定しないでList(リスト)から対象の要素を削除しています。
そのため、リストの末尾である「2」と「Java」が削除されて表示されています。
pop()で多次元List(リスト)から要素を削除する場合
pop()は1次元リストだけでなく、多次元List(リスト)の要素を削除することもできます。
多次元List(リスト)の場合はリストの中にリストが存在するため、繰り返し処理で深い階層にアクセスして処理を行う必要があります。
そのため、ここではpop()で多次元List(リスト)から要素を削除する方法についてご紹介します。
2次元List(リスト)の場合
2次元List(リスト)に対してpop()を使用します。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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('● pop()使用後(1次元リスト)') for list1_n in list1: list1_n_pop = list1_n.pop(3) print('・削除した要素: ' + str(list1_n_pop)) print(list1) print('● pop()使用後(2次元リスト)') list1_pop = list1.pop(3) print('・削除した要素: ' + str(list1_pop)) print(list1) |
実行結果
pop()で2次元List(リスト)から対象の要素を削除しています。
今回は繰り返し処理としてfor文(for-in)を使用したため、2次元List(リスト)内にある各1次元List(リスト)の4番目の要素である「4」、「40」、「400」、「4000」を削除したリストがそれぞれ表示されています。
また、2次元List(リスト)の4番目の要素である「[1000, 2000, 3000, 5000]」を削除したリストが表示されています。
3次元List(リスト)の場合
3次元List(リスト)に対してpop()を使用します。
● 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 24 | print('● 対象の3次元リスト') list1 = [ [['JavaScript', 'C#', 'PHP'],['Python', 'Swift', 'Java'], ['Ruby']], [['Node.js', 'ASP.NET', 'CakePHP'],['flask', 'perfect', 'spring'], ['Ruby-On-Rail']] ] print(list1) print('● pop()使用後(1次元リスト)') for list1_n in list1: for list1_nm in list1_n: list1_nm_pop = list1_nm.pop(0) print('・削除した要素: ' + list1_nm_pop) print(list1) print('● pop()使用後(2次元リスト)') for list1_n in list1: list1_n_pop = list1_n.pop(1) print('・削除した要素: ' + str(list1_n_pop)) print(list1) print('● pop()使用後(3次元リスト)') list1_pop = list1.pop(0) print('・削除した要素: ' + str(list1_pop)) print(list1) |
実行結果
pop()で3次元List(リスト)から対象の要素を削除しています。
今回も繰り返し処理としてfor文(for-in)を使用したため、3次元List(リスト)内にある各1次元List(リスト)の1番目の要素である「JavaScript」「Python」、「Ruby」、「Node.js」、「flask」、「Ruby-On-Rail」を削除したリストがそれぞれ表示されています。
また、3次元List(リスト)内にある各2次元List(リスト)の2番目の要素である「[‘Swift’, ‘Java’]」、「[‘perfect’, ‘spring’]」を削除したリストがそれぞれ表示されています。
そして、3次元List(リスト)の1番目の要素である「[[‘C#’, ‘PHP’], []]」を削除したリストが表示されています。
pop()を使用した実際のケース
pop()を使用した実際のケースについてご紹介します。
例えば、pop()を使用して一度登録した項目を登録できないようなコードを作成します。
● 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 | <!DOCTYPE html> <html lang="ja"> <head> <title>pop()でList(リスト)から対象の要素を削除する</title> <meta charset="utf-8"/> </head> <body> <form action="/result" method="POST"> <h1>登録する趣味を選択</h1> <div> <input type=radio name='item' value = 'sports'>スポーツ <input type=radio name='item' value = 'anime'>アニメ・漫画 <input type=radio name='item' value = 'reading'>読書 <input type=radio name='item' value = 'sauna'>サウナ <input type=radio name='item' value = 'youtube'>YouTube <input type=radio name='item' value = 'drama'>ドラマ <input type=radio name='item' value = 'shopping'>ショッピング <input type=radio name='item' value = 'movie'>映画 </div> <button type="submit">登録</button> </form> </body> </html> |
● result.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!DOCTYPE html> <html lang="ja"> <head> <title>pop()でList(リスト)から対象の要素を削除する</title> <meta charset="utf-8"/> </head> <body> {% if flag == 0 %} <h1>選択した趣味の登録が完了しました。</h1> {% else %} <h1>選択した趣味が登録できませんでした。</h1> <p>すでに項目が登録されています。</p> {% endif %} <p><a href ='http://'>topに戻る</a></p> </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 24 25 26 27 28 29 30 | <!DOCTYPE html> from flask import Flask, render_template, request app = Flask(__name__) no_reg_list = ['sports' ,'anime' , 'reading' , 'sauna' , 'youtube' , 'drama', 'shopping', 'movie'] reg_list = [] @app.route('/') def index(): return render_template('index.html') @app.route('/result', methods=['POST']) def result(): error_flag = 0 try: item = request.form.get('item') error_msg = '' idx = no_reg_list.index(item) reg_list.append(no_reg_list[idx]) no_reg_list.pop(idx) except Exception as e: error_flag = 1 finally: return render_template('result.html',flag = error_flag) if __name__ == '__main__': app.run() |
実行結果(未登録の場合)
実行結果(登録済の場合)
pop()で一度登録した項目を重複して登録できないようにしています。
今回は、下記のような処理の流れで登録や登録済みの判断を行っています。
- 未登録の趣味List(リスト)と登録済の趣味List(リスト)を作成
- 登録する時には要素をpop()で未登録の趣味List(リスト)から削除し、append()で登録済の趣味List(リスト)に追加
- index()で未登録の趣味List(リスト)内を検索
(インデックスが見つかった場合は「4」へ、インデックスが見つからかった場合は「5」) - 未登録の趣味List(リスト)内に存在するため、「未登録」と判断
- エラーが発生するため、例外処理として「登録済」と判断
そのため、未登録の趣味を選択すると「登録が完了しました。」というメッセージが表示され、再び同じ趣味を選択して登録すると「登録できませんでした。」のメッセージが表示されます。
もし、index()について詳しく知りたい場合は下記の記事をご参考下さい。
pop()以外でList(リスト)から要素を削除する方法の一覧
Pythonではpop()以外でもリストから要素を削除する関数が存在します。
そのため、ここではpop()以外でList(リスト)から要素を削除する方法の一覧についてご紹介します。
remove()
remove()とはイテレータから指定した要素を削除することができる関数になります。
そのため、リストに対して使用することで指定した要素をリストから削除することができまます。
● 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("● remove()使用後-1") list1.remove(678) print(list1) print('● 対象のリスト-2') list2 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list2) print("● clear()使用後-2") list2.remove('PHP') print(list2) |
実行結果
remove()でList(リスト)から指定した要素を削除しています。
そのため、「678」と4番目である「PHP」を削除したList(リスト)が表示されています。
もし、remove()について詳しく知りたい場合は下記の記事をご参考ください。
del()
delとは指定したデータを取り除くことができる文になります。
そのため、リストに対して使用すると指定した要素をリストから削除することができます。
● 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("● del使用後-1") del list1[0] print(list1) print('● 対象のリスト-2') list2 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list2) print("● del使用後-2") del list2[3] print(list2) |
実行結果
del()でList(リスト)から指定した要素を削除しています。
そのため、1番目である「175」と4番目である「C#」を削除したList(リスト)が表示されています。
clear()
clear()とはイテレータの要素をすべて削除する関数になります。
そのため、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("● clear()使用後-1") list1.clear() print(list1) print('● 対象のリスト-2') list2 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list2) print("● clear()使用後-2") list2.clear() print(list2) |
実行結果
clear()でList(リスト)の要素をすべて削除しています。
そのため、要素が格納されていたList(リスト)が空のリストとなって表示されています。
List(リスト)の指定した位置に要素を追加する場合
List(リスト)の指定した位置に要素を追加する場合はinsert()を使用します。
insert()とは、イテレータに指定した値を要素として追加する関数になります。
そのため、今回ご紹介しているpop()で削除した要素をappend()で再び格納することができます。
● 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("● insert()使用後-1") list1_pop = list1.insert(1, 9999) print(list1) print('● 対象のリスト-2') list2 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list2) print("● insert()使用後-2") list2.insert(5, 'Swift') print(list2) |
実行結果
insert()でList(リスト)の指定した位置に要素が追加されています。
そのため、2番目に「9999」と6番目に「Swift」を追加したList(リスト)が表示されています。
まとめ
● pop()とはイテレータに格納された対象の値を取り除く関数である。
● pop()をList(リスト)に対して使用する場合は、下記の引数を指定して使用する。
・インデックス:(必須 or 任意)
● インデックスが正の数である場合にpop()を使用すると、一、List(リスト)から対象の要素を削除する。
● インデックスが要素数より大きい場合にpop()を使用すると、エラーが発生する。
● インデックスが少数である場合にpop()を使用すると、エラーが発生する。
● Lインデックスが負の数である場合にpop()を使用すると、リストの末尾から数えたインデックスの要素を削除する。
● パラメータであるインデックスを指定しないでpop()を使用するとイテレータの末尾の要素を削除する。
● pop()は1次元(List)リストだけでなく、多次元List(リスト)に対しても使用できる。
● Pyhtonでリストから要素を削除するにはpop()以外にも下記のような方法がある。
・remove()
(イテレータから指定した要素を取り除く関数)
・del
(オブジェクトから指定したデータを削除する構文)
・clear()
(イテレータから要素を全て削除する関数)
● List(リスト)の指定した位置に要素を追加する場合はinsert()を使用する。