TechCraft – エンジニアのためのスキルアップメモ

エンジニアのスキルアップを少しでも加速する技術ブログ

知っておきたいPythonリスト操作大全

知っておきたいPythonリスト操作大全:初心者脱却のための厳選テクニック集

Pythonの基礎といえば「リスト操作」。でも、appendとextendの違いスライスの便利技リスト内包表記の奥深さなど、意外と理解が曖昧になりやすい分野です。

本記事では、リストにまつわる“似て非なる機能”を丁寧に整理し、Python初心者が一歩レベルアップできる知識を身につけることを目指します。


1. append vs extend:リストの追加、実は違う!

a = [1, 2, 3]
a.append([4, 5])
print(a)  # [1, 2, 3, [4, 5]]

b = [1, 2, 3]
b.extend([4, 5])
print(b)  # [1, 2, 3, 4, 5]
  • append:リストを「1要素」として追加
  • extend:リストの中身を展開して追加

2. insert vs slice:リストの好きな場所に要素を追加する

lst = [1, 2, 3]
lst.insert(1, 9)  # 1番目の前に9を挿入
print(lst)  # [1, 9, 2, 3]

lst[1:1] = [8, 7]  # スライスを使って複数挿入
print(lst)  # [1, 8, 7, 9, 2, 3]
  • insert:単一要素を指定位置に
  • スライス代入:複数要素を柔軟に挿入可能

3. pop vs remove vs del:リストの削除三兄弟

lst = [1, 2, 3, 4, 5]

lst.pop(2)  # 位置で削除
# lst -> [1, 2, 4, 5]

lst.remove(4)  # 値で削除
# lst -> [1, 2, 5]

del lst[0]  # delキーワード
# lst -> [2, 5]
  • pop(index):指定位置の要素を削除&取得
  • remove(value):指定値を削除(値がないとエラー)
  • del:インデックスやスライスで一気に削除

4. sorted vs sort:リストの並び替え、返す or その場?

nums = [3, 1, 2]

sorted_nums = sorted(nums)  # 新リストを返す
print(sorted_nums)  # [1, 2, 3]
print(nums)  # 元のリストは変わらない

nums.sort()  # その場で並び替え
print(nums)  # [1, 2, 3]
  • sorted():新しいリストを返す(元は変更なし)
  • list.sort():リスト自身を変更(in-place)

5. any vs all:リストの論理評価

flags = [True, False, True]

print(any(flags))  # True:1つでもTrueならOK
print(all(flags))  # False:全てTrueならOK
  • any():1つでもTrueならTrue
  • all():全てTrueでないとFalse

6. map vs list内包表記:リストを加工する2つの道

nums = [1, 2, 3]

# map
doubled = list(map(lambda x: x*2, nums))
# [2, 4, 6]

# 内包表記
doubled2 = [x*2 for x in nums]
# [2, 4, 6]
  • map():関数を適用、やや読みづらい
  • リスト内包:Pythonicで直感的、推奨!

7. zip vs enumerate:複数リストやインデックスを一緒に使う

names = ["Alice", "Bob", "Charlie"]
scores = [90, 85, 88]

for name, score in zip(names, scores):
    print(f"{name}: {score}")

for idx, name in enumerate(names, 1):
    print(f"{idx}: {name}")
  • zip():複数リストを組み合わせて走査
  • enumerate():インデックス付き走査

8. まとめ:Pythonリスト操作の「違い」を押さえて、賢く使いこなそう

機能 主な用途
append 1つの要素を末尾に追加
extend リストの要素を展開して追加
insert 指定位置に1つの要素を追加
slice代入 複数要素を柔軟に挿入
pop インデックスで削除+取得
remove 値で削除
del スライスで一気に削除
sorted 新しい並び替えリストを取得
sort その場で並び替え
any/all リストの論理評価
map/内包 要素の一括加工、Pythonicは内包
zip 複数リストの並列処理
enumerate インデックス付きループ

参考リンク

参考書籍