Pythonでリスト(配列)に要素を追加するappend, extend, insert

Pythonでlist型のリスト(配列)に要素を追加したり別のリストを結合したりするには、リストのメソッドappend(), extend(), insert()を使います。そのほか、+演算子やスライスで位置を指定して代入する方法もあります。

末尾に要素を追加: append() 末尾に別のリストやタプルを結合(連結): extend(), +演算子 指定位置に要素を追加(挿入): insert() 指定位置に別のリストやタプルを追加(挿入): スライスを使う

なお、リストは異なる型のデータを格納可能で、厳密には配列とは異なります。メモリサイズやメモリアドレスを必要とするような処理や大規模なデータの数値計算処理などで配列を扱いたい場合はarray(標準ライブラリ)やNumPyを使います。

末尾に要素を追加: append()

リストのメソッドappend()で、末尾(最後)に要素を追加できます。先頭など、末尾以外の位置に追加したい場合は後述のinsert()を使います。

l = list(range(3))
print(l)
# [0, 1, 2]

l.append(100)
print(l)
# [0, 1, 2, 100]

l.append('new')
print(l)
# [0, 1, 2, 100, 'new']

リストもひとつの要素として追加されます。結合はされません。

l.append([3, 4, 5])
print(l)
# [0, 1, 2, 100, 'new', [3, 4, 5]]

末尾に別のリストやタプルを結合(連結): extend()

リストのメソッドextend()で、末尾(最後)に別のリストやタプルを結合できます。すべての要素が元のリストの末尾に追加されます。

l = list(range(3))
print(l)
# [0, 1, 2]

l.extend([100, 101, 102])
print(l)
# [0, 1, 2, 100, 101, 102]

l.extend((-1, -2, -3))
print(l)
# [0, 1, 2, 100, 101, 102, -1, -2, -3]

文字列は各文字(要素)が一文字ずつ追加されるので気をつけてください。

l.extend('new')
print(l)
# [0, 1, 2, 100, 101, 102, -1, -2, -3, 'n', 'e', 'w']

extend()メソッドではなく+演算子を使っても連結することができます。 +演算子の場合は新たなリストが返されます。+=で既存のリストに追加することもできます。

l2 = l + [5, 6, 7]
print(l2)
# [0, 1, 2, 100, 101, 102, -1, -2, -3, 'n', 'e', 'w', 5, 6, 7]

l += [5, 6, 7]
print(l)
# [0, 1, 2, 100, 101, 102, -1, -2, -3, 'n', 'e', 'w', 5, 6, 7]

指定位置に要素を追加(挿入): insert()

リストのメソッドinsert()で、指定した位置に要素を追加(挿入)できます。 第一引数に位置、第二引数に挿入する要素を指定します。先頭(最初)は0。負の値の場合、-1が末尾(最後)の一つ前となります。

l = list(range(3))
print(l)
# [0, 1, 2]

l.insert(0, 100)
print(l)
# [100, 0, 1, 2]

l.insert(-1, 200)
print(l)
# [100, 0, 1, 200, 2]

append()と同じく、リストもひとつの要素として追加されます。結合はされません。

l.insert(0, [-1, -2, -3])
print(l)
# [[-1, -2, -3], 100, 0, 1, 200, 2]

指定位置に別のリストやタプルを追加(挿入): スライスを使う

スライスで範囲を指定して別のリストやタプルを代入すると、すべての要素が追加(挿入)されます。

l = list(range(3))
print(l)
# [0, 1, 2]

l[1:1] = [100, 200, 300]
print(l)
# [0, 100, 200, 300, 1, 2]

元の要素を置換することもできます。指定した範囲の要素がすべて置き換えられます。

l = list(range(3))
print(l)
# [0, 1, 2]

l[1:2] = [100, 200, 300]
print(l)
# [0, 100, 200, 300, 2]
Last Updated: 6/26/2019, 10:34:03 PM