AI資格ドリル
資格を選ぶ

用語比較

append()とextend()の違い|リストへの追加方法をPython3エンジニア認定基礎試験で判断する

append()とextend()は、どちらもリストの末尾へ追加するメソッドで、append()は渡した値をそのまま1個の要素として足し、extend()はイテラブルの要素を1つずつ展開して足します。

Python 3 エンジニア認定基礎試験では、リストにリストを足す設問で、どちらを使うと想定した形になるかを判断させる問題が出ます。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。

append()とextend()の要点

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

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

PR

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

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

01

append()とextend()を「要素を足すメソッド」とひとまとめに覚えている初学者

append()は渡した値をそのまま1個の要素として足し、extend()はイテラブルを1つずつ展開して足します。リストにリストを足す場面で結果を比べると、二つの違いが分かりやすくなります。

02

リストを結合したいのにappend()を使ってしまう人

a.append([3, 4]) は [3, 4] というリストそのものを1個の要素として足すため、結果は入れ子のリストになります。要素を1つずつ展開して結合したい場合はa.extend([3, 4])を使います。

03

extend()に渡せる値をリストだけだと思っている再受験者

公式チュートリアルはextend()について「イテラブルのすべての要素」と説明しており、リストに限らずタプルや文字列などイテラブル全般を渡せます。渡した値がリストかどうかではなく、イテラブルかどうかで考えます。

問題文から答えを選ぶ手順

  1. 1

    渡す値を1個の要素として足したいか確認する

    値そのものを1個の要素として足したい場合はappend()を使います。

  2. 2

    渡す値を展開して複数の要素として足したいか確認する

    イテラブルの要素を1つずつ展開して足したい場合はextend()を使います。

  3. 3

    リストにリストを足す設問では結果の形を確認する

    入れ子のリスト([1, 2, [3, 4]])になっているか、展開された形([1, 2, 3, 4])になっているかで、使われたメソッドを判断します。

  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()はどちらを使えばいい?

A

渡した値をそのまま1個の要素として足したいときはappend()、イテラブルの要素を展開して足したいときはextend()を使います。

Qextend()にはリストしか渡せない?

A

いいえ。公式チュートリアルは「イテラブルのすべての要素」と説明しており、タプルや文字列などイテラブル全般を渡せます。

Qa.append([3, 4])とa.extend([3, 4])は同じ結果になる?

A

なりません。append()は[1, 2, [3, 4]]という入れ子のリストになり、extend()は[1, 2, 3, 4]という展開された形になります。

Qappend()とextend()の違いはa[len(a):] = ...の代入でどう説明される?

A

公式チュートリアルは、append()をa[len(a):] = [x]、extend()をa[len(a):] = iterableと同様の操作として説明しています。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)