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型変数[削除対象インデックス]

さっそく使い方を見てみましょう。以下のコードでは(0番目から数えて)2番目の要素が削除されたことが確認できます。

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

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

先頭、末尾を削除する場合は以下の通りそれぞれ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メソッド

リストにはpopメソッドという指定されたインデックスの要素を削除し、その要素を戻り値として返すメソッドが用意されていますがこれを削除として使用することができます。

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

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

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