知っておきたい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ならTrueall():全て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 |
インデックス付きループ |
参考リンク
参考書籍
リンク
リンク