🐍 Python
list.append(x) / list.extend(iterable) / list.insert(i, x)
リストに要素を追加する3つの方法です。特にappendとextendは見た目が似ていながら結果がまったく違うため、AIが生成したコードでどちらが使われているかを見分けられるようになると役立ちます。
list.append(x) # 末尾にxを1つの要素として追加
list.extend(iterable) # iterableの各要素を末尾に1つずつ追加
list.insert(i, x) # インデックスiの位置にxを挿入
appendの基本:末尾に1つ追加
lst = ["a", "b"]
lst.append("c")
print(lst) # ['a', 'b', 'c']
appendとextendの違い:リストを渡したときの挙動
ここが最も間違えやすいポイントです。appendにリストを渡すと、そのリストそのものが1つの要素として追加されます(二重リストになる)。一方extendは渡したリストの各要素を1つずつ追加します。
lst1 = [1, 2]
lst1.append([3, 4])
print(lst1) # [1, 2, [3, 4]] ← リストが丸ごと1要素として入る
lst2 = [1, 2]
lst2.extend([3, 4])
print(lst2) # [1, 2, 3, 4] ← 各要素が追加される
insertで途中に挿入する
lst3 = ["a", "c"]
lst3.insert(1, "b")
print(lst3) # ['a', 'b', 'c']
+演算子との違い
+演算子は元のリストを変更せず、新しいリストを作って返します。append/extendは元のリスト自体を書き換える点が違います。
lst4 = [1, 2]
lst5 = lst4 + [3, 4]
print(lst5) # [1, 2, 3, 4](新しいリスト)
print(lst4) # [1, 2](元は変わっていない)
3つのメソッドの違い
- append(x)
- xを1つの要素として末尾に追加。xがリストでもそのまま1要素になる
- extend(iterable)
- iterableの各要素を末尾に展開して追加。文字列を渡すと1文字ずつ追加される点にも注意
- insert(i, x)
- インデックスiの位置にxを挿入し、それ以降の要素は後ろにずれる
💡 AIコードレビュー観点:複数要素を追加したいのにappendが使われていないか
「リストに複数の要素をまとめて追加したい」という意図のコードでappend([3, 4])と書かれていたら、それはほぼ確実にextend([3, 4])の書き間違いです。実行してもエラーにはならず、二重リストになったまま気づかれにくいバグなので、AIが生成したコードでも実際の出力を確認する価値があります。
要素を削除する方法はremove/popのページで解説しています。