【レッスン4-02】リストから要素を削除する4つの方法|Pythonデータ構造

一つ前の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を用いたアプリ開発
リストの要素削除の方法と具体例
ここからリストの要素削除の説明に入ります。
ページ下部にはこのページで出てくる用語の意味をまとめた 用語集 もありますので、分からない言葉が出てきたらそちらも参考にしてください。
Pythonのリストは非常に柔軟なデータ構造であり、要素を追加したり削除したりすることが簡単にできます。
本記事ではリストから要素を削除する4つの方法を初心者向けに解説します。
これらの方法を理解することで、リストの操作がより効率的に行えるようになります。
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
: 指定したインデックスの要素を削除し、その要素を返す。
- ステートメント: プログラムの制御を行う命令で、構文的に決まった動作を持つもの。特定のオブジェクトに関連付けられたものではなく、より汎用的に使われる。
- メソッド: 特定のオブジェクトに関連付けられた関数。例えば
まとめ
Pythonにはリストから要素を削除するための便利な方法がいくつか用意されています。
clear
メソッドで全ての要素を削除したり、remove
やpop
で特定の要素を削除したり、del
を使って柔軟に要素を扱うことが可能です。
用途に応じて最適な削除方法を選んでください。
練習問題:リストの要素を削除操作をマスターしよう
リストから要素を削除する方法を学習するためのプログラムを作成しましょう。
まず果物の名前をリストに格納し、そのリストから要素を削除する操作を行います。
clear
、remove
、pop
メソッドや del
ステートメントを使用して、リストの要素をさまざまな方法で削除しましょう。
問題の詳細条件
以下の要件に従ってコードを完成させてください。
- 変数
fruits
に["りんご", "バナナ", "みかん", "いちご", "ぶどう"]
というリストを格納すること。 clear
メソッドを使用してリストの全ての要素を削除し、その結果を表示すること。- 変数
fruits
に再び["りんご", "バナナ", "みかん", "いちご", "ぶどう"]
を格納すること。 remove
メソッドを使用してリストからバナナ
を削除し、その結果を表示すること。pop
メソッドを使用してリストからいちご
を削除し、その要素とリストの状態を表示すること。del
ステートメントを使用してインデックス1
の要素を削除し、その結果を表示すること。
ただし、以下のような実行結果となるコードを書くこと。
リストを clear した結果: [] バナナを remove した結果: ['りんご', 'みかん', 'いちご', 'ぶどう'] いちごを pop した結果: ['りんご', 'みかん', 'ぶどう'] 削除された要素: いちご インデックス1の要素を del した結果: ['りんご', 'ぶどう']
【ヒント】難しいと感じる人だけ見よう
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:リスト
fruits
に5つの果物の名前を格納
2:clear
メソッドを使用してリストfruits
の全要素を削除
3:削除後のリストの内容をprint
で出力
4:リストfruits
に再び5つの果物の名前を格納
5:remove
メソッドを使用してリストから「バナナ」を削除
6:削除後のリストの内容をprint
で出力
7:pop
メソッドを使用してインデックス2の要素を削除し、その要素を変数removed_fruit
に代入
8:削除後のリストの内容をprint
で出力
9:削除された要素(removed_fruit
)をprint
で出力
10:del
ステートメントを使用してインデックス1の要素を削除
11:削除後のリストの内容をprint
で出力
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
# リストの要素削除を学習するためのコード # リストを作成 fruits = ["りんご", "バナナ", "みかん", "いちご", "ぶどう"] """【穴埋め問題1】 ここにリストの全ての要素を削除する clear メソッドを使ったコードを書いてください。 """ print("リストを clear した結果:", fruits) # 出力: リストを clear した結果: [] # 再びリストを作成 fruits = ["りんご", "バナナ", "みかん", "いちご", "ぶどう"] """【穴埋め問題2】 ここに remove メソッドを使って、リストから「バナナ」を削除するコードを書いてください。 """ print("バナナを remove した結果:", fruits) # 出力: バナナを remove した結果: ['りんご', 'みかん', 'いちご', 'ぶどう'] """【穴埋め問題3】 ここに pop メソッドを使って、インデックス2の要素を削除し、その要素を変数 removed_fruit に代入するコードを書いてください。 """ print("インデックス2の要素を pop した結果:", fruits) # 出力: インデックス2の要素を pop した結果: ['りんご', 'みかん', 'ぶどう'] print("削除された要素:", removed_fruit) # 出力: 削除された要素: いちご """【穴埋め問題4】 ここに del ステートメントを使って、インデックス1の要素を削除するコードを書いてください。 """ print("インデックス1の要素を del した結果:", fruits) # 出力: インデックス1の要素を del した結果: ['りんご', 'ぶどう']
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
問題の答え合わせと解説
この問題の一つの正解例とそのコードの解説を以下に示します。
一つの正解例
例えば以下のようなプログラムが考えられます。
- 正解コード
-
# リストの要素削除を学習するためのコード # リストを作成 fruits = ["りんご", "バナナ", "みかん", "いちご", "ぶどう"] # リストの全ての要素を削除する場合は clear メソッドを使います fruits.clear() print("リストを clear した結果:", fruits) # 出力: リストを clear した結果: [] # 再びリストを作成 fruits = ["りんご", "バナナ", "みかん", "いちご", "ぶどう"] # remove メソッドを使って、特定の要素(バナナ)を削除します fruits.remove("バナナ") print("バナナを remove した結果:", fruits) # 出力: バナナを remove した結果: ['りんご', 'みかん', 'いちご', 'ぶどう'] # pop メソッドを使って、インデックス2の要素(いちご)を削除し、その要素を返します removed_fruit = fruits.pop(2) print("インデックス2の要素を pop した結果:", fruits) # 出力: インデックス2の要素を pop した結果: ['りんご', 'みかん', 'ぶどう'] print("削除された要素:", removed_fruit) # 出力: 削除された要素: いちご # del ステートメントを使って、インデックス1の要素を削除します del fruits[ 1] print("インデックス1の要素を del した結果:", fruits) # 出力: インデックス1の要素を del した結果: ['りんご', 'ぶどう']
正解例の詳細解説
Pythonのリストは複数の値を一つの変数にまとめて保持できるデータ型です。
このコードでは、4つの代表的な要素削除方法を学びます。
- 詳細解説
-
リストを作成する
fruits = ["りんご", "バナナ", "みかん", "いちご", "ぶどう"]
ここでは「fruits」という名前のリストを作成しています。
このリストには5つの果物が格納されています。
clear
メソッドで全ての要素を削除するfruits.clear()
clear
メソッドはリスト内のすべての要素を一度に削除するために使用します。この操作を行うとリストは空になります。よって上記のコードを実行すると、
fruits
リストの中身は空([]
)になります。remove
メソッドで特定の要素を削除するfruits.remove("バナナ")
remove
メソッドはリストから指定した要素を削除します。この例では、「バナナ」をリストから取り除いています。
注意点として、
remove
メソッドは最初に見つかった要素だけを削除します。同じ要素が複数存在する場合は、2つめ以降は削除されません。pop
メソッドでインデックスを指定して削除するremoved_fruit = fruits.pop(2)
pop
メソッドは指定したインデックスの要素を削除し、その削除した要素を返します。ここではインデックス2(3番目)の要素を削除し、その値を
removed_fruit
という変数に格納しています。インデックスは0から始まるので、3番目の要素は「いちご」になります。
del
ステートメントで特定の位置の要素を削除するdel
ステートメントは指定したインデックスの要素を削除します。この例ではインデックス1の要素(「みかん」)をリストから削除しています。
del
はメソッドではなくPythonの文法として提供されているため、直接操作を行う場合に使用します。まとめ
今回のコードではPythonでリストの要素を削除する代表的な方法を学びました。
clear
でリスト全体を空にしたり、remove
やpop
で特定の要素を削除する方法を理解することで、リストの操作が自在にできるようになります。リスト操作はプログラミングの基本的なスキルの一つですので、ぜひ繰り返し練習してください。
Python用語集|リストの要素削除編
今回の記事で出てきた用語・関数などを一覧で紹介します。
このサイトに出てくる 全てのPython用語をまとめた用語集 も活用してください。
Python用語 | 定義・使い方の概要 | 解説記事へのリンク |
---|---|---|
リスト | 複数の値を順序付きで保持できるデータ構造。要素の追加・削除・変更が可能 | Lesson4-1 |
インデックス | リストなどのシーケンス型で要素を特定するための番号。最初の要素はインデックス0から始まる | Lesson4-1 |
clear() メソッド | リスト内の全ての要素を削除して空のリストにするメソッド | 本記事 |
remove() メソッド | 指定した値と一致する最初の要素をリストから削除するメソッド | 本記事 |
pop() メソッド | 指定した位置または末尾の要素を取り出して削除するメソッド | 本記事 |
del ステートメント | リストの要素や変数などを明示的に削除するためのステートメント | 本記事 |
ステートメント | 実行可能な1つの命令を表す構文単位。代入、関数呼び出し、条件分岐などが該当 | 本記事 |
FAQ|Pythonリストからの要素削除
- Q1. removeとpopの使い分けのポイントは何ですか?
-
remove()
は値を指定して削除、pop()
はインデックスを指定して削除します。戻り値も異なり、pop()
は削除した要素を返すので再利用可能です。
- Q2. リストを完全に空にするにはどうすればいいですか?
-
clear()
メソッドを使うと、リスト内のすべての要素を一括で削除できます。del list[:]
でも同様の結果が得られます。
- Q3. 存在しない要素をremoveするとエラーになりますか?
-
はい、削除対象の要素がリストに存在しない場合、
remove()
はValueError
を発生させます。in
演算子で事前チェックすることで回避できます。