Pythonでリストに要素を追加する方法として、append()
とextend()
があります。本記事では、それぞれの違いについて詳しく解説します。
append()
メソッド
append()
はリストの末尾に1つの要素を追加するメソッドです。このメソッドはリスト自体を変更しますが、返り値はNone
なので注意が必要です。
使用例
a = [1, 2, 3]
print(a) # [1, 2, 3]
b = a.append(4) # `append()` は `None` を返す
print(a) # [1, 2, 3, 4]
print(b) # None
append()
を使うとリストa
自体が変更されるため、新しい変数b
にはNone
が入ります。
extend()
メソッド
extend()
はリストに 別のiterable(イテラブル) の要素を追加するメソッドです。こちらもリスト自体を変更し、返り値はNone
です。
extend()
の引数に関する注意点
extend()
の引数はiterable(イテラブル) である必要があります。iterableとは、for
ループなどで要素を1つずつ取り出せるオブジェクトのことです。例えば、list
、tuple
、str
などが該当します。
使用例
x = [1, 2, 3]
print(x) # [1, 2, 3]
# x.extend(4) # TypeError: 'int' object is not iterable
y = x.extend([4]) # `extend()` は `None` を返す
print(x) # [1, 2, 3, 4]
print(y) # None
extend()
の引数には リストのようなiterable を渡す必要があり、整数を渡すとエラーになります。
(番外編)新しい変数に反映したい場合
append()
やextend()
はリストを直接変更するため、新しい変数に代入してもNone
が入ります。新しい変数に変更後のリストを代入したい場合は、+
演算子を使います。
使用例
s = [1, 2, 3]
print(s) # [1, 2, 3]
t = s + [4] # `s` は変更されず、新しいリストが `t` に代入される
print(s) # [1, 2, 3]
print(t) # [1, 2, 3, 4]
+
を使うと元のリストs
を変更せずに、新しいリストを作成できます。
まとめ
メソッド | 動作 | 返り値 |
---|---|---|
append(x) |
リストの末尾に x を追加 |
None |
extend(iterable) |
リストの末尾に iterable の要素を追加 |
None |
+ |
新しいリストを作成 | 新しいリスト |
-
append()
は1つの要素を追加するが、返り値はNone
。 -
extend()
はiterableの要素を展開して追加するが、返り値はNone
。 - 新しいリストとして扱いたい場合は
+
を使う。