【Python】レッスン4-02:リストの要素を削除しよう
一つ前のLessonではリストの定義と要素の追加について学習しました。
今回はリストの要素削除について見ていきます。
Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:関数とスコープ編
Lesson4:データ構造編
・Lesson4-1:リストの定義と要素の追加を理解しよう
・Lesson4-2:リストの要素を削除しよう ◁今回はココ
・Lesson4-3:リストの情報を調べよう
・Lesson4-4:リストの集計・並べ替えを理解しよう
・Lesson4-5:リストのスライスを理解しよう
・Lesson4-6:リストのループ処理を理解しよう
・Lesson4-7:リストの内包表記を理解しよう
・Lesson4-8:リスト・タプル・辞書・集合の概要と違いを理解しよう
・Lesson4-9:タプルの基本を理解しよう
・Lesson4-10:タプルのアンパックを理解しよう
・Lesson4-11:辞書の基本を理解しよう
・Lesson4-12:辞書のループ処理を理解しよう
・Lesson4-13:辞書の内包表記を使ってリストから辞書を作ろう
・Lesson4-13:集合(セット)の基本を理解しよう
・練習問題4-1:宝探しゲームを作ろう
・練習問題4-2:ナインゲームを作ろう
・練習問題4-3:マルバツゲームを作ろう
Lesson5:オブジェクト指向編
次のステップ:Python基礎習得者にお勧めの道5選(実務or副業)
リストの要素削除の基本と使い分け(clear/remove/pop/del)
リスト要素を削除する方法は、用途に応じて複数のやり方があります。
本記事では、clear
/remove
/pop
/del
の基本動作と違いを整理し、どのシーンでどれを選ぶべきかを初心者向けにわかりやすく解説します。
それでは、リストの削除操作を一度で迷わず選べるように、基本から実践例まで順に押さえていきましょう。
本文へ進んで、コードを動かしながら確実に身につけてください。
clear
メソッドの使い方|リストを空にする(全要素削除)
clear
メソッド はリスト内のすべての要素を一度に削除することができます。
リストを空にしたい場合に便利です。
my_list = [ 1, 2, 3, 4, 5] # 5つの要素を持つリストmy_listの作成 my_list.clear() # my_listの要素を全削除 print(my_list) # my_listを出力。結果: []
このメソッドを使用すると、リスト自体は保持されますが要素はすべて削除されます。
remove
メソッドの使い方|値で削除(最初の一致のみ)
remove
メソッド を使うと、リスト内で最初に見つかった特定の要素を削除することができます。
指定された要素が存在しない場合はエラーが発生するので注意が必要です。
my_list = [ 1, 2, 3, 2, 4] # 5つの要素を持つリストmy_listの作成 my_list.remove(2) # 「2」という値を持つ"最初の"要素を削除 print(my_list) # my_listを出力。結果: [ 1, 3, 2, 4]
この例ではリスト内の最初の 2
が削除されていることがわかります。
pop
メソッドの使い方|位置で削除して値を取り出す
pop
メソッド は指定したインデックスの要素を削除し、その要素を返します。
インデックスを指定しない場合は、リストの末尾の要素が削除されます。
my_list = [ 1, 2, 3, 4, 5] # 5つの要素を持つリストmy_listの作成 removed_element = my_list.pop(2) # インデックス2(3番目)の要素を変数に代入し、リストから削除 print(removed_element) # 変数の値を出力。結果: 3 print(my_list) # my_listを出力。結果: [ 1, 2, 4, 5]
このメソッドは要素を削除しつつその値を返すため、削除した要素が必要な場合に便利です。
del
ステートメントの使い方|特定のインデックスの要素完全削除
del
ステートメント はリスト内の特定のインデックスの要素を削除するために使われます。
また、リスト全体を削除することも可能です。
my_list = [ 1, 2, 3, 4, 5] # 5つの要素を持つリストmy_listの作成 del my_list[ 1] # インデックス1(2番目)の要素を削除 print(my_list) # my_listを出力。結果: [ 1, 3, 4, 5] # リスト全体を削除 del my_list # 変数my_list自体を削除 print(my_list) # エラー発生: 'my_list' が存在しない
del
を使ってリスト全体を削除した場合、リストそのものが存在しなくなります。
- コラム:ステートメントとは?|メソッドとの違い
-
メソッドとステートメントの違い
- メソッド: 特定のオブジェクトに関連付けられた関数。例えば
clear
、remove
、pop
はすべてリスト等のオブジェクトに対して動作する関数、すなわちメソッドである。clear
: リスト内のすべての要素を削除する。remove
: 指定した要素を削除する。pop
: 指定したインデックスの要素を削除し、その要素を返す。
- ステートメント: プログラムの制御を行う命令で、構文的に決まった動作を持つもの。特定のオブジェクトに関連付けられたものではなく、より汎用的に使われる。
- メソッド: 特定のオブジェクトに関連付けられた関数。例えば
まとめ|値・位置・一括の削除を使い分けよう
ここまでで、リストの削除手段 clear
/ remove
/ pop
/ del
の挙動と選び方を整理しました。
clear
:リストを空にする(in-place、戻り値はNone
)remove
:値で削除(最初に一致した要素だけ、見つからないとValueError
)pop
:位置で削除して値を取得(省略時は末尾、範囲外でIndexError
)del
:インデックス/スライスで削除(複数要素の一括削除や部分削除に便利)
これにより、コレクションのリセット、重複要素の除去、末尾からの取り出し、範囲指定の部分削除など、目的に応じて最短手で操作できるようになりました。
小さなスクリプトでもデータ整形の見通しが良くなり、エラーを未然に避けた読みやすいコードを書けます。
あとは手を動かして定着させましょう。今回の使い分けを、自分のデータや練習コードに当てはめて確かめつつ、次のレッスンでも一歩ずつ前進していきましょう。
- サイト改善アンケート|ご意見をお聞かせください(1分で終わります)
-
本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの「プログラミングを学習する理由」などをアンケート形式でお伺いしています。1分だけ、ご協力いただけますと幸いです。
【Python】サイト改善アンケート
練習問題:リストの要素削除操作をマスターしよう
この記事で学習した「リストの要素削除」を復習する練習問題に挑戦しましょう。
問題|リストの要素削除プログラム
リストから要素を削除する方法を学習するためのプログラムを作成しましょう。
まず果物の名前をリストに格納し、そのリストから要素を削除する操作を行います。
clear
、remove
、pop
メソッドや del
ステートメントを使用して、リストの要素をさまざまな方法で削除しましょう。
以下の要件に従ってコードを完成させてください。
- 変数
fruits
に["りんご", "バナナ", "みかん", "いちご", "ぶどう"]
というリストを格納すること。 clear
メソッドを使用してリストの全ての要素を削除し、その結果を表示すること。- 変数
fruits
に再び["りんご", "バナナ", "みかん", "いちご", "ぶどう"]
を格納すること。 remove
メソッドを使用してリストからバナナ
を削除し、その結果を表示すること。pop
メソッドを使用してリストからいちご
を削除し、その要素とリストの状態を表示すること。del
ステートメントを使用してインデックス1
の要素を削除し、その結果を表示すること。
ただし、以下のような実行結果となるコードを書くこと。
リストを clear した結果: [] バナナを remove した結果: ['りんご', 'みかん', 'いちご', 'ぶどう'] いちごを pop した結果: ['りんご', 'みかん', 'ぶどう'] 削除された要素: いちご インデックス1の要素を del した結果: ['りんご', 'ぶどう']
ヒント|難しいと感じる人だけ見よう
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
1:リストを初期化し、clear と remove で「全消去」と「値指定の削除」を確認する
・文字列の並びは角かっこで囲み、カンマで区切って変数に代入。
・すべての要素を消すときは、変数に対してclear()
を呼び出す。
・中身を消した後は、同じ内容で変数に再代入してリストを復元する。
・特定の値を取り除くときはremove("バナナ")
のように、削除したい文字列を引数に渡す。2:popで「位置削除+取り出し」を行い、delで指定インデックスを削除して確認する
・「位置で削除して値も受け取る」操作はpop(インデックス)
。
・取り除いた値は変数に代入しておく。
・del
は値を返さずに指定位置を削除する。インデックス指定は角かっこで書く。
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
# リストを作成 fruits = ["りんご", "バナナ", "みかん", "いちご", "ぶどう"] # リストの全ての要素を削除する場合は clear メソッドを使います fruits.'''(穴埋め)'''() print("リストを clear した結果:", fruits) # 再びリストを作成 fruits = ["りんご", "バナナ", "みかん", "いちご", "ぶどう"] # remove メソッドを使って、特定の要素(バナナ)を削除します fruits.'''(穴埋め)'''("バナナ") print("バナナを remove した結果:", fruits) # pop メソッドを使って、インデックス2の要素(いちご)を削除し、その要素を返します removed_fruit = fruits.'''(穴埋め)'''(2) print("インデックス2の要素を pop した結果:", fruits) print("削除された要素:", removed_fruit) # del ステートメントを使って、インデックス1の要素を削除します '''(穴埋め)ここに del ステートメントでインデックス1の要素を削除するコードを書く''' print("インデックス1の要素を del した結果:", fruits)
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例|リスト要素削除プログラム
例えば以下のようなプログラムが考えられます。
- 正解コード
-
# リストを作成 fruits = ["りんご", "バナナ", "みかん", "いちご", "ぶどう"] # リストの全ての要素を削除する場合は clear メソッドを使います fruits.clear() print("リストを clear した結果:", fruits) # 再びリストを作成 fruits = ["りんご", "バナナ", "みかん", "いちご", "ぶどう"] # remove メソッドを使って、特定の要素(バナナ)を削除します fruits.remove("バナナ") print("バナナを remove した結果:", fruits) # pop メソッドを使って、インデックス2の要素(いちご)を削除し、その要素を返します removed_fruit = fruits.pop(2) print("インデックス2の要素を pop した結果:", fruits) print("削除された要素:", removed_fruit) # del ステートメントを使って、インデックス1の要素を削除します del fruits[ 1] print("インデックス1の要素を del した結果:", fruits)
解答例の解説|リスト要素削除プログラムの考え方
解答例の詳細解説は以下の通りです。
- 詳細解説
-
リストの初期化と削除
# リストを作成 fruits = ["りんご", "バナナ", "みかん", "いちご", "ぶどう"] # リストの全ての要素を削除する場合は clear メソッドを使います fruits.clear() print("リストを clear した結果:", fruits) # 再びリストを作成 fruits = ["りんご", "バナナ", "みかん", "いちご", "ぶどう"] # remove メソッドを使って、特定の要素(バナナ)を削除します fruits.remove("バナナ") print("バナナを remove した結果:", fruits)
最初に果物名を並べたリストを用意します。
次に、clear メソッドでそのリストの中身をすべて消して、空の状態になったことを出力で確認します。
いったん全部消したため、同じ内容のリストを作り直し、今度は remove メソッドで特定の値だけを取り除きます。
remove は最初に見つかった一致だけを削除するのが特徴です。
各操作の直後に状態を表示して、操作の結果を目で確かめられるようにしています。popとdel
# pop メソッドを使って、インデックス2の要素(いちご)を削除し、その要素を返します removed_fruit = fruits.pop(2) print("インデックス2の要素を pop した結果:", fruits) print("削除された要素:", removed_fruit) # del ステートメントを使って、インデックス1の要素を削除します del fruits[ 1] print("インデックス1の要素を del した結果:", fruits)
まずインデックスで指定した位置の要素を取り除き、その取り除いた値そのものも変数に受け取ります。
これにより、リストの状態の変化と、削除された値の両方を別々に確認できます。
続いて、インデックスを指定して要素を削除する方法を使い、削除後のリストの状態を確かめます。
ここでは、位置指定の削除と、削除された値を受け取れるかどうかの違いに注目しながら確認します。
リストの要素削除の疑問解消|FAQと用語のまとめ
初心者がつまずきやすいポイントをFAQとしてまとめ、またよく使う専門用語をわかりやすく整理しました。
理解を深めたいときや、ふと疑問に感じたときに役立ててください。
FAQ|リストの要素削除に関するよくある質問
- Q1. removeとpopの使い分けのポイントは何ですか?
-
remove()
は値を指定して削除、pop()
はインデックスを指定して削除します。戻り値も異なり、pop()
は削除した要素を返すので再利用可能です。
- Q2. リストを完全に空にするにはどうすればいいですか?
-
clear()
メソッドを使うと、リスト内のすべての要素を一括で削除できます。del list[:]
でも同様の結果が得られます。
- Q3. 存在しない要素をremoveするとエラーになりますか?
-
はい、削除対象の要素がリストに存在しない場合、
remove()
はValueError
を発生させます。in
演算子で事前チェックすることで回避できます。
Python用語集|リストの要素削除に関する用語一覧
今回の記事で出てきた用語・関数などを一覧で紹介します。
このサイトに出てくる 全てのPython用語をまとめた用語集 も活用してください。
Python用語 | 定義・使い方の概要 | 解説記事へのリンク |
---|---|---|
リスト | 複数の値を順序付きで保持できるデータ構造。要素の追加・削除・変更が可能 | Lesson4-1 |
インデックス | リストなどのシーケンス型で要素を特定するための番号。最初の要素はインデックス0から始まる | Lesson4-1 |
clear() メソッド | リスト内の全ての要素を削除して空のリストにするメソッド | 本記事 |
remove() メソッド | 指定した値と一致する最初の要素をリストから削除するメソッド | 本記事 |
pop() メソッド | 指定した位置または末尾の要素を取り出して削除するメソッド | 本記事 |
del ステートメント | リストの要素や変数などを明示的に削除するためのステートメント | 本記事 |
ステートメント | 実行可能な1つの命令を表す構文単位。代入、関数呼び出し、条件分岐などが該当 | 本記事 |