5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonでリストにデータを追加するときのappend()と"+="演算子の挙動の違い

Last updated at Posted at 2020-03-15

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 と等価です。

以上

5
2
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?