用語比較
list.append()と insert() の違い|要素を足す位置(Python3基礎)
リストに要素を1個足したいとき、append() と insert() が候補になります。どちらも元のリストを書き換え、戻り値は None です。
違いは足す位置で、append() は必ず末尾、insert() は引数のインデックスの位置です。
このページは、先頭に足したつもりが末尾に入った人や、insert() の引数の順番に迷う人向けです。決まりは、Python 公式チュートリアルのリストの項に書かれています。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。
結論
a.append(x)
リストの末尾に x を1個足す。引数は値だけ。
a.insert(i, x)
インデックス i の位置に x を足す。第1引数が位置、第2引数が値。
共通
元のリストを書き換え、戻り値は None になる。
違いを表で確認
| 比較軸 | a.append(x) | a.insert(i, x) |
|---|---|---|
| 足す位置(a = [1, 2, 3]) | a.append(9):a は [1, 2, 3, 9] | a.insert(0, 9):a は [9, 1, 2, 3] |
| 引数の数 | 値の1個だけ | 位置と値の2個 |
| リストを渡したとき(x が [8, 9]) | a.append([8, 9]):a は [1, 2, 3, [8, 9]] | a.insert(0, [8, 9]):a は [[8, 9], 1, 2, 3] |
| 戻り値 | None | None |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
先頭に足したつもりが、末尾に入っていた人
append() には位置を指定する引数がありません。a.append(9) は常に末尾に足します。Python 3.9.6 では [1, 2, 3] が [1, 2, 3, 9] になりました。先頭に足したいなら a.insert(0, 9) です。
insert() の引数の順番に迷う人
第1引数が位置、第2引数が値です。a.insert(1, 9) は、インデックス 1 の位置に 9 を入れます。Python 3.9.6 で [1, 2, 3] が [1, 9, 2, 3] になりました。値と位置を逆に書くと、別の位置に入ります。
リストの範囲を超えた位置を指定した人
a.insert(100, 9) は、エラーにならず末尾に足されました。Python 3.9.6 で [1, 2, 3, 9] になりました。公式チュートリアルには、a.insert(len(a), x) は a.append(x) と同じ、と書かれています。
具体例で使い分ける
例 1
同じ値を、位置を変えて足す
a = [1, 2, 3] に対して、a.append(9) と a.insert(0, 9) を、それぞれ最初の状態から実行します。
- 公式チュートリアルは、append() をリストの末尾に項目を足すメソッドと説明しています。
- insert() は、第1引数のインデックスの位置に項目を足すメソッドと説明されています。
結論: append() のあとは [1, 2, 3, 9]、insert(0, 9) のあとは [9, 1, 2, 3] です。Python 3.9.6 で同じ結果を確認しました。
例 2
戻り値を変数に代入してしまう
a = [1, 2, 3] のあとで、a = a.append(4) と書きます。
- append() はリストを書き換えますが、戻り値は None です。
- その None を a に代入すると、元のリストへの参照が無くなります。
結論: a は None になります。Python 3.9.6 で同じ結果を確認しました。insert() でも同じです。書き換えだけをして代入はしません。
問題文から答えを選ぶ手順
- 1
足す位置を決める
末尾でよいなら append() です。先頭や途中に入れたいなら insert() です。
- 2
insert() の引数を確かめる
第1引数に位置、第2引数に値を書きます。
- 3
戻り値を使わない
どちらも None を返すので、結果を別の変数に代入しません。
試験での見分け方
- 1append() は末尾に1個足す。
- 2insert(i, x) はインデックス i の位置に x を足す。
- 3insert(len(a), x) は append(x) と同じ。
- 4どちらもリストを書き換え、戻り値は None。
誤答しやすい選択肢
append() で先頭に足せると思う
修正: append() は末尾専用です。先頭に足すなら insert(0, 値) を使います。
insert() の引数の順番を逆にする
修正: 位置が先、値が後です。a.insert(位置, 値) と覚えます。
a = a.append(4) のように代入する
修正: 戻り値は None です。a.append(4) とだけ書き、a を使い続けます。
確認問題
Q1a = [1, 2, 3] のとき、a.append(9) を実行したあと、a は何ですか?
答え: [1, 2, 3, 9]
append() は末尾に足します。
Q2a = [1, 2, 3] のとき、a.insert(1, 9) を実行したあと、a は何ですか?
答え: [1, 9, 2, 3]
第1引数の 1 がインデックスで、その位置に 9 が入ります。
Q3a = [1, 2, 3] のとき、a = a.append(4) のあとで a は何になりますか?
答え: None
append() の戻り値は None で、それが a に代入されます。
到達チェック
- append() は末尾に足すと言える
- insert() の第1引数が位置だと言える
- insert(len(a), x) が append(x) と同じだと言える
- どちらも戻り値は None だと言える
関連ページで確認する
同じ資格で次に知りたいこと
- dict.get()と setdefault() の違い|辞書に書き込むかどうか(Python3基礎)
辞書の get() はキーが無いとき辞書を変えずに既定値を返し、setdefault() は既定値を辞書に挿入して返します。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
- strip()と replace() の違い|空白を消す範囲(Python3基礎)
文字列の strip() は両端の文字だけを取り除き、replace() は文字列中の一致をすべて置き換えます。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
- str.find()と index() の違い|見つからないとき -1 か ValueError か(Python3基礎)
文字列の find() は見つからないと -1 を返し、index() は ValueError を起こします。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、-1 を条件式に使う落とし穴、確認問題つきで整理します。
よくある質問
Qinsert() で範囲外の位置を指定するとエラーになりますか?
Python 3.9.6 では、a.insert(100, 9) はエラーにならず末尾に足されました。
Q負のインデックスも使えますか?
使えます。Python 3.9.6 では、[1, 2, 3] に insert(-1, 9) すると [1, 2, 9, 3] になりました。
Qどちらが速いですか?
このページでは速度を比べていません。足す位置で選びます。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
