Pythonのリスト(list)はミュータブル(変更可能)であるため、作成した後でも自由に要素を追加したり、挿入したりできます。
要素を追加する基本的なメソッドとして、append() と insert() の2つが用意されています。これらは似ていますが、要素が追加される「場所」が異なります。
この記事では、append() と insert() の機能と、それぞれの適切な使い分けについて解説します。
append() – リストの末尾に要素を追加する
append() は、リストに要素を追加する際に最も一般的に使用されるメソッドです。このメソッドは、引数として渡された1つの要素を、リストの**末尾(最後尾)**に追加します。
構文:
リスト変数.append(追加したい要素)
使用例:
タスク管理リストに新しいタスクを追加する例を見てみましょう。
# 処理待ちのタスクリスト
pending_tasks = ["ユーザー認証の実装", "ドキュメント作成"]
print(f"追加前: {pending_tasks}")
# 末尾に新しいタスクを追加
pending_tasks.append("テストコードの記述")
print(f"追加後: {pending_tasks}")
実行結果:
追加前: ['ユーザー認証の実装', 'ドキュメント作成']
追加後: ['ユーザー認証の実装', 'ドキュメント作成', 'テストコードの記述']
"テストコードの記述" がリストの最後に追加されました。
insert() – リストの指定した位置に要素を挿入する
insert() は、リストの**特定の位置(インデックス)**を指定して、そこに新しい要素を挿入(割り込ませる)ためのメソッドです。
構文:
リスト変数.insert(インデックス, 挿入したい要素)
インデックス に指定した位置に 挿入したい要素 が入り、その位置にもともとあった要素とそれ以降の要素は、すべて一つ後ろにずれます。
使用例:
ランキングリストの途中に、新しいエントリーを挿入する例です。
# ランキングリスト
user_ranking = ["Sato", "Suzuki", "Takahashi"]
print(f"挿入前: {user_ranking}")
# インデックス 1 (2番目) の位置に "Tanaka" を挿入
user_ranking.insert(1, "Tanaka")
print(f"挿入後: {user_ranking}")
# インデックス 0 (先頭) の位置に "Watanabe" を挿入
user_ranking.insert(0, "Watanabe")
print(f"先頭挿入後: {user_ranking}")
実行結果:
挿入前: ['Sato', 'Suzuki', 'Takahashi']
挿入後: ['Sato', 'Tanaka', 'Suzuki', 'Takahashi']
先頭挿入後: ['Watanabe', 'Sato', 'Tanaka', 'Suzuki', 'Takahashi']
insert(1, ...) によって "Sato" と "Suzuki" の間に "Tanaka" が挿入され、insert(0, ...) によってリストの先頭に "Watanabe" が挿入されました。
append() と insert() の違い
| メソッド | 追加場所 | 引数 | 備考 |
append() | 末尾のみ | 1つ(要素) | 高速に動作します。 |
insert() | 任意の位置 | 2つ(インデックス, 要素) | insert(0, ...) で先頭に追加できます。要素の数が多い場合、append() に比べて処理に時間がかかることがあります(既存要素のシフト処理のため)。 |
まとめ
- リストの末尾に要素を追加したい場合は、
append()を使用します。 - リストの先頭や途中など、特定の位置に要素を挿入したい場合は、
insert()を使用します。
単純に追加するだけの場合は append() を使い、順序に意味があり割り込ませる必要がある場合のみ insert() を使う、という使い分けが基本です。
