AI資格ドリル
資格を選ぶ↓

用語比較

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]
戻り値NoneNone

Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)

試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

先頭に足したつもりが、末尾に入っていた人

append() には位置を指定する引数がありません。a.append(9) は常に末尾に足します。Python 3.9.6 では [1, 2, 3] が [1, 2, 3, 9] になりました。先頭に足したいなら a.insert(0, 9) です。

02

insert() の引数の順番に迷う人

第1引数が位置、第2引数が値です。a.insert(1, 9) は、インデックス 1 の位置に 9 を入れます。Python 3.9.6 で [1, 2, 3] が [1, 9, 2, 3] になりました。値と位置を逆に書くと、別の位置に入ります。

03

リストの範囲を超えた位置を指定した人

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. 1

    足す位置を決める

    末尾でよいなら append() です。先頭や途中に入れたいなら insert() です。

  2. 2

    insert() の引数を確かめる

    第1引数に位置、第2引数に値を書きます。

  3. 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 だと言える

同じ資格で次に知りたいこと

よくある質問

Qinsert() で範囲外の位置を指定するとエラーになりますか?

A

Python 3.9.6 では、a.insert(100, 9) はエラーにならず末尾に足されました。

Q負のインデックスも使えますか?

A

使えます。Python 3.9.6 では、[1, 2, 3] に insert(-1, 9) すると [1, 2, 9, 3] になりました。

Qどちらが速いですか?

A

このページでは速度を比べていません。足す位置で選びます。

次に見る比較

執筆: ミナト編集部(運営者情報を見る)