list(リスト)型 更新操作

前回の続きです。リストの更新系の操作について説明します。

listの要素を更新する

インデックスを指定して、listの要素を参照することができましたが、代入することによりlistの要素を更新することができます。

更新
リスト型変数[インデックス] = 更新値
l = [1, 2, 3, 4, 0]
l[0] = 99
print(l) # [99, 2, 3, 4, 0]

この例の場合、0番目の要素が初期化時に1でしたが、99に更新されていることが確認できます。

リストの要素追加

リストの最後尾に要素を追加する場合は、appendを利用します。

要素の追加
リスト型変数.append(追加したい変数)
l = [1, 2, 3]
l.append(4)
print(l) # [1, 2, 3, 4]

一番最後に4が追加されたことが確認できると思います。

リストの要素挿入

途中に要素を追加する場合、insertを利用します。

特定の位置に要素を追加
list型変数.insert(挿入する位置を示すインデックス, 挿入する変数)

サンプルで確認してみましょう。

# 0番目に挿入する
l = ['a', 'b', 'c']
l.insert(0, 'x')
print(l) # ['x', 'a', 'b', 'c']

# 2番目に挿入する
l.insert(2, 'y')
print(l) # ['x', 'a', 'y', 'b', 'c']

# 最後尾に挿入する
l.insert(-1, 'z')
print(l) # ['x', 'a', 'y', 'b', 'z', 'c']

指定したインデックスの位置に挿入されたことが確認できます。

削除

リストの要素削除にはいくつかの方法があります。順番に見てみましょう。

指定した要素を削除

指定した要素を削除する場合は、remove関数を使います。

l = ['a', 'b', 'c', 'd', 'c']

# aを削除する
l.remove('a')
print(l) # ['b', 'c', 'd', 'c']

# 重複した値を削除すると、先頭側のものが削除される
l.remove('c')
print(l) # ['b', 'd', 'c']

# 存在しない値を指定するとValueErrorが発生
l.remove('e') # ValueError: list.remove(x): x not in list

指定した値が削除されますが、同じ値がリストに挿入されている場合は、先頭側の値が削除されます。

また、リストに存在しない値を指定した場合は、ValueErrorが発生するので注意しましょう。

指定したインデックスを削除

インデックスを指定して削除することも可能です。del文を使用する方法とpop関数を利用する2つの方法があります。

del文

delの構文は以下の通りです。

削除
del list型変数[削除対象インデックス]

さっそく使い方を見てみましょう。

l = ['a', 'b', 'c', 'd']

del l[2] # インデックスが2の要素を削除
print(l) # ['a', 'b', 'd']

(0番目から数えて)2番目の要素が削除されたことが確認できます。

先頭、末尾を削除する場合は、以下のとおり、それぞれ0、-1を指定します。

l = ['a', 'b', 'c', 'd']

del l[0] # 最初の要素を削除
print(l) # ['b', 'c', 'd']


del l[-1] # 最後の要素を削除
print(l) # ['b', 'c']

もちろん、インデックス指定にスライス構文を使うこともできます。

l = ['a', 'b', 'c', 'd']

del l[0:2] # 0番目から2番目前まで削除
print(l) # ['c', 'd']

この場合、(0から数えて)0番目から2番目の手前まで削除されます。(0から数えて)2番目自身は削除されないので注意してください。

pop関数

list型変数にはpop関数が用意されています。pop関数は指定されたインデックスの要素を削除し、その要素を戻り値として返します。

l = ['a', 'b', 'c', 'd']

x = l.pop(2) # 2番目の要素を取り出して削除する
print(x) # 'c'
print(l) # ['a', 'b', 'd']

上のサンプルでは、popした値がxに格納されていることが確認できます。また、引数に何も指定しない場合は末尾の要素が削除されます。