前回の続きです。リストの更新系の操作について解説します。
Contents
リストの要素を更新
インデックスを指定して、listの要素を参照することができましたが、代入することによりlistの要素を更新することができます。
l = [1, 2, 3, 4, 0] l[0] = 99 print(l) # [99, 2, 3, 4, 0]
この例の場合、0番目の要素が初期化時に1でしたが、99に更新されていることが確認できます。
リストに要素を追加
リストの最後尾に要素を追加する場合は、appendメソッドを利用します。
l = [1, 2, 3] l.append(4) print(l) # [1, 2, 3, 4]
一番最後に4が追加されたことが確認できると思います。
リストに要素を挿入
途中に要素を追加する場合、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の構文は以下の通りです。
さっそく使い方を見てみましょう。以下のコードでは(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に格納されていることが確認できます。また、引数に何も指定しない場合は末尾の要素が削除されます。