Pythonでリストにデータを追加するときのappend()
と+=
演算子の挙動の違いを確認したのでメモ。
append()
の場合
いずれの型(文字列型、数値型、辞書型、配列型など)であっても、指定したデータのまま1要素として配列に追加される。
>>> d_list = []
>>> d_list.append('Hello')
>>> d_list.append(123)
>>> d_list.append({'a':1, 'b':2, 'c':3})
>>> d_list.append([1, 2, 3])
>>> d_list
['Hello', 123, {'a': 1, 'b': 2, 'c': 3}, [1, 2, 3]]
+=
の場合
イテレータとしての動作をし、指定したデータのイテラブル(iterable)のすべての要素が配列に追加される。
動作としてはextend()
と同じとなる。
文字列型のデータは各キャラクターが1要素として追加される。
>>> d_list = []
>>> d_list += 'Hello'
>>> d_list
['H', 'e', 'l', 'l', 'o']
数値型のデータはiterableではないのでエラーとなる。
>>> d_list += 123
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
辞書型のデータは各要素のキー名がそれぞれ1要素として追加される。
>>> d_list = []
>>> d_list += {'a':1, 'b':2, 'c':3}
>>> d_list
['a', 'b', 'c']
配列型のデータは各要素がそれぞれ1要素として追加される。
>>> d_list = [1, 2]
>>> d_list += [3, 4, 5]
>>> d_list
[1, 2, 3, 4, 5]
参考
5.1. リスト型についてもう少し
list.append(x)
リストの末尾に要素を一つ追加します。a[len(a):] = [x] と等価です。list.extend(iterable)
イテラブルのすべての要素を対象のリストに追加し、リストを拡張します。a[len(a):] = iterable と等価です。
以上