用語比較
append()とextend()の違い|リストへの追加方法をPython3エンジニア認定基礎試験で判断する
append()とextend()は、どちらもリストへ要素を追加するメソッドです。公式チュートリアルはappend()について「リストの末尾に要素を一つ追加します」、extend()について「イテラブルのすべての要素を対象のリストに追加し、リストを拡張します」と説明しています。渡した値をそのまま1個の要素として足すか、要素を1つずつ展開して足すかが違います。
Python 3 エンジニア認定基礎試験では、リストにリストを足す設問で、append()とextend()のどちらを使うと想定した形になるかを判断させる問題が出ます。a = [1, 2] に対して a.append([3, 4]) を実行すると [1, 2, [3, 4]] になり、a.extend([3, 4]) を実行すると [1, 2, 3, 4] になります。
このページは、append()とextend()を「リストに要素を足すメソッド」とひとまとめに覚えている人を対象にしています。渡した値がそのまま1個の要素になるか、展開されて複数の要素になるかで判断します。
この記事の目次
この記事の根拠と出典
本文の主要なセクションでは、公式一次資料と照合した内容と編集部の整理を、見出しの下のラベルで区別しています。 試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-09-18。
結論
append()
リストの末尾に要素を一つ追加するメソッド。渡した値そのものが1個の要素になる。
extend()
イテラブルのすべての要素を対象のリストに追加し、リストを拡張するメソッド。渡した値は1つずつ展開される。
違いを表で確認
| 比較軸 | append() | extend() |
|---|---|---|
| 公式チュートリアルの説明 | 「リストの末尾に要素を一つ追加します」 | 「イテラブルのすべての要素を対象のリストに追加し、リストを拡張します」 |
| 渡した値の扱い | そのまま1個の要素になる | 1つずつ展開されて複数の要素になる |
| a = [1, 2]にa.append([3, 4])/a.extend([3, 4])を実行した結果 | [1, 2, [3, 4]] | [1, 2, 3, 4] |
| 同様の代入と等しい式 | a[len(a):] = [x] | a[len(a):] = iterable |
どこで迷っているかを切り分ける
append()とextend()を「要素を足すメソッド」とひとまとめに覚えている初学者
append()は渡した値をそのまま1個の要素として足し、extend()はイテラブルを1つずつ展開して足します。リストにリストを足す場面で結果を比べると、二つの違いが分かりやすくなります。
リストを結合したいのにappend()を使ってしまう人
a.append([3, 4]) は [3, 4] というリストそのものを1個の要素として足すため、結果は入れ子のリストになります。要素を1つずつ展開して結合したい場合はa.extend([3, 4])を使います。
extend()に渡せる値をリストだけだと思っている再受験者
公式チュートリアルはextend()について「イテラブルのすべての要素」と説明しており、リストに限らずタプルや文字列などイテラブル全般を渡せます。渡した値がリストかどうかではなく、イテラブルかどうかで考えます。
問題文から答えを選ぶ手順
- 1
渡す値を1個の要素として足したいか確認する
値そのものを1個の要素として足したい場合はappend()を使います。
- 2
渡す値を展開して複数の要素として足したいか確認する
イテラブルの要素を1つずつ展開して足したい場合はextend()を使います。
- 3
リストにリストを足す設問では結果の形を確認する
入れ子のリスト([1, 2, [3, 4]])になっているか、展開された形([1, 2, 3, 4])になっているかで、使われたメソッドを判断します。
- 4
a[len(a):] = ... の代入と対応させる
append()はa[len(a):] = [x]、extend()はa[len(a):] = iterableと同様の操作だと公式チュートリアルは説明しています。
試験での見分け方
- 1append()は渡した値をそのまま1個の要素として末尾に足す。
- 2extend()はイテラブルのすべての要素を1つずつ展開して末尾に足す。
- 3リストにリストを足すと、append()は入れ子のリストに、extend()は展開された1つのリストになる。
- 4extend()に渡せるのはリストに限らずイテラブル全般。
誤答しやすい選択肢
append()とextend()を同じ結果になるメソッドとして扱う
修正: append()は渡した値を1個の要素として足し、extend()は要素を1つずつ展開して足すという別の結果になります。
リストを結合したいのにappend()を使い入れ子のリストを作ってしまう
修正: リストを展開して結合したい場合はextend()を使います。append()を使うと渡したリストがそのまま1個の要素になります。
extend()にはリストしか渡せないと考える
修正: extend()にはタプルや文字列などイテラブル全般を渡せます。渡した値がリストかどうかは条件ではありません。
確認問題
Q1a = [1, 2] に a.append([3, 4]) を実行した結果はどれ?
答え: [1, 2, [3, 4]]
append()は渡した値をそのまま1個の要素として末尾に足すため、[3, 4]というリストそのものが1個の要素になります。
Q2a = [1, 2] に a.extend([3, 4]) を実行した結果はどれ?
答え: [1, 2, 3, 4]
extend()はイテラブルのすべての要素を1つずつ展開して足すため、3と4がそれぞれ別の要素として追加されます。
Q3リストを展開して結合したいときに使うメソッドはどちら?
答え: extend()
append()は渡した値を1個の要素として足すため入れ子になります。展開して結合したい場合はextend()を使います。
到達チェック
- append()が渡した値を1個の要素として足すメソッドだと説明できる
- extend()がイテラブルの要素を1つずつ展開して足すメソッドだと説明できる
- リストにリストを足したときの結果の違いを挙げられる
- extend()にリスト以外のイテラブルも渡せると説明できる
関連ページで確認する
よくある質問
Qappend()とextend()はどちらを使えばいい?
渡した値をそのまま1個の要素として足したいときはappend()、イテラブルの要素を展開して足したいときはextend()を使います。
Qextend()にはリストしか渡せない?
いいえ。公式チュートリアルは「イテラブルのすべての要素」と説明しており、タプルや文字列などイテラブル全般を渡せます。
Qa.append([3, 4])とa.extend([3, 4])は同じ結果になる?
なりません。append()は[1, 2, [3, 4]]という入れ子のリストになり、extend()は[1, 2, 3, 4]という展開された形になります。
Qappend()とextend()の違いはa[len(a):] = ...の代入でどう説明される?
公式チュートリアルは、append()をa[len(a):] = [x]、extend()をa[len(a):] = iterableと同様の操作として説明しています。
執筆: ミナト編集部(運営者情報を見る)