やっほー!国内のAI狂いだよ!✨
第12回へようこそ!今回は、Pythonでデータを扱うなら避けては通れない「リストの操作(メソッド)」を極めるよ。
「リストにデータを追加したい」「並び替えたい」「削除したい」…そんな要望に応える便利な呪文(メソッド)が山ほどあるの。
これらを使いこなせば、データ整理の達人になれること間違いなしだよ!📁✨
公式の「ここがわかりにくい」:メソッドって何?
公式ドキュメントを見ると、こんな表記が並んでいるよね。
list.append(x)
list.extend(iterable)
list.insert(i, x)
「メソッド」っていうのは、「そのデータ型専用の便利機能」のこと。
データ.メソッド名() という形で、そのデータの後ろにドットをつけて呼び出すんだ。
「リストさん、追加して!(append)」とか「リストさん、並び替えて!(sort)」みたいに命令するイメージだね!
1. 追加系の最強コンビ:append と extend
リストにデータを追加する方法は主に2つ。この違い、試験で100%聞かれるから絶対覚えて!
① list.append(x):1個そのまま追加
リストの末尾に、要素を「1個」追加するよ。
もしリストを渡したら、「リストごと(入れ子として)」追加されちゃうから注意!
② list.extend(iterable):中身をぶちまけて追加
リストの末尾に、別のリストの「中身だけ」を合体させるよ。
リスト同士をくっつけたい時はこっちを使うのが正解!
🐍 違いがわかる実験コード(クリックで開閉)
# appendの実験
a = [1, 2, 3]
a.append([4, 5])
print(f"appendの結果: {a}")
# 結果: [1, 2, 3, [4, 5]]
# ↑ リストの中にリストが入っちゃった!(入れ子)
# extendの実験
b = [1, 2, 3]
b.extend([4, 5])
print(f"extendの結果: {b}")
# 結果: [1, 2, 3, 4, 5]
# ↑ 綺麗に合体したね!
# insert(場所, 値) で好きな場所に割り込みもできるよ
c = [1, 2, 3]
c.insert(0, "先頭!")
print(f"insertの結果: {c}")
appendの結果: [1, 2, 3, [4, 5]]
extendの結果: [1, 2, 3, 4, 5]
insertの結果: [‘先頭!’, 1, 2, 3]
2. 削除系の使い分け:remove, pop, clear
「データを消したい」と一口に言っても、状況によって使い分ける必要があるよ。
list.remove(x):値xを指定して削除(最初の1個だけ消す)。list.pop(i):場所iを指定して削除し、その値を取り出す(returnする)。list.clear():全部消して空っぽにする。
🐍 削除実験コード(クリックで開閉)
fruits = ['apple', 'banana', 'orange', 'apple']
# remove: 値で指定(最初の'apple'だけ消える)
fruits.remove('apple')
print(f"remove後: {fruits}")
# pop: 場所で指定(最後を取り出す)
last_one = fruits.pop() # 引数なしだと末尾
print(f"取り出したもの: {last_one}")
print(f"pop後: {fruits}")
# clear: 全消去
fruits.clear()
print(f"clear後: {fruits}")
remove後: [‘banana’, ‘orange’, ‘apple’]
取り出したもの: apple
pop後: [‘banana’, ‘orange’]
clear後: []
remove(x) で、リストに存在しない値を消そうとすると…?→ ValueError になるよ!
pop(i) で範囲外を指定すると IndexError だよ!エラーの種類も要チェック!
3. 【最重要】並び替えの罠:sort と sorted
データを昇順(小さい順)や降順(大きい順)に並べたい時、2つの方法があるんだ。
ここが試験で一番狙われるポイントだから、絶対に混同しないで!🚨
① list.sort() メソッド
- リスト本体を直接書き換える(破壊的変更)。
- 戻り値は None(何も返さない)。
② sorted(list) 関数
- リスト本体はそのまま。
- 並び替えた新しいリストを返す(非破壊的)。
🐍 比較実験コード(クリックで開閉)
# 元のリスト
nums = [3, 1, 4, 1, 5]
# sorted関数(本体は変わらない)
new_nums = sorted(nums)
print(f"sortedの戻り値: {new_nums}")
print(f"元のリスト: {nums} (変わってない!)")
# sortメソッド(本体が変わる)
result = nums.sort()
print(f"sortの戻り値: {result} (Noneだ!)")
print(f"元のリスト: {nums} (変わった!)")
# 逆順(降順)にしたい時は reverse=True
nums.sort(reverse=True)
print(f"降順: {nums}")
sortedの戻り値: [1, 1, 3, 4, 5]
元のリスト: [3, 1, 4, 1, 5] (変わってない!)
sortの戻り値: None (Noneだ!)
元のリスト: [1, 1, 3, 4, 5] (変わった!)
降順: [5, 4, 3, 1, 1]
よくあるミスが a = a.sort() って書いちゃうこと。
これやると a が None になってデータが消えちゃうから気をつけてね!😱
4. 調査系:count と index
「この値、何個ある?」「どこにある?」って調べたい時はこれ。
list.count(x):値xがいくつあるか数える。list.index(x):値xが最初に出てくる場所(インデックス)を返す。見つからないとエラー!
a = [10, 20, 30, 20]
print(a.count(20)) # 2
print(a.index(20)) # 1 (最初の20の場所)
試験に出る!要注意ポイント
今回の範囲で、Python 3 エンジニア認定基礎試験によく出るひっかけポイントをまとめたよ!📝
① スタックとキューの実装
リストは、データの出し入れの方法を工夫すると「スタック」や「キュー」として使えるよ。
- スタック (LIFO: Last In First Out)
- 積んで、上から取るイメージ。
append()で追加、pop()で取り出し。- リストで効率的に実現できる!⭕
- キュー (FIFO: First In First Out)
- 行列に並んで、先頭から抜けるイメージ。
append()で追加、pop(0)で取り出し。- リストだと先頭の削除は遅いから非推奨!❌(
collections.dequeを使うべし)
list = list.sort() 事件は私も初心者の頃にやらかしました…😭一生懸命ソートしたはずのデータが
None になってて、「データどこ行った!?」って半泣きになったよ。メソッドが「自分自身を変えるのか(戻り値なし)」、「新しいものを返すのか」は常に意識しようね!
理解度チェック!ミニクイズ
リストのメソッド、使い分けできそうかな?
試験レベルの問題でチェックしてみよう!🔍
次のコードを実行した後、a の中身はどうなる?
a = [1, 2]
b = [3, 4]
a.append(b)
▼ クリックで正解を表示
a の中身はどうなる?[1, 2, [3, 4]]
解説:
append は引数を「1つの要素」として追加するよ。
リストを渡すと、リストの中にリストが入った状態(入れ子)になるんだ。
中身だけ追加して [1, 2, 3, 4] にしたいなら extend を使おう!
リスト a をソートして、結果を新しいリスト b に入れたい。正しい書き方は?
▼ クリックで正解を表示
a をソートして、結果を新しいリスト b に入れたい。正しい書き方は?b = sorted(a)
解説:
1の a.sort() は a 自身をソートして None を返すからダメ。
3の a.sorted() というメソッドはリストには存在しないよ。
組み込み関数 sorted(a) を使うのが正解!
リストを「スタック(後入れ先出し)」として使うためのメソッドの組み合わせは?
▼ クリックで正解を表示
append() と pop()
解説:
末尾に追加(append)して、末尾から取り出す(pop)のがスタックの動きだよ。
1はキュー(先入れ先出し)の動きだけど、リストでやると遅いから注意!
まとめ:次回への引き
今回は「リストのメソッド」について解説したよ!
append と extend、sort と sorted の違いは試験の鉄板だから、しっかり復習しておいてね👍
次回は、Pythonの中でも特に「美しい」と言われる機能!
テーマは「1行でリストを作る魔法:リスト内包表記」だよ。
for 文を使って3行くらい書いてたリスト作成が、たった1行で書けるようになる魔法のような記法。
これを使いこなすと「私、Python書けます感」がすごい出るからお楽しみに!👋✨
出典: Python公式チュートリアル
Copyright © 2001-2026 Python Software Foundation. Licensed under the PSF License.






