home changes contents help options

093:配列の先頭末尾の要素を除去

delとインデックスを使って要素を削除します。シーケンス型各種のインデックスに負の値を用いると、後ろから数えるという法則があります。つまり末尾のインデックスは -1 で表すことができます。

>>> L = range(5)
>>> L
[0, 1, 2, 3, 4]
>>> del L[0] # 先頭を削除
>>> L
[1, 2, 3, 4]
>>> del L[-1] # 末尾を削除
>>> L
[1, 2, 3]

値を取り出しつつ削除するには pop メソッドを用います。

>>> L = range(5)
>>> L
[0, 1, 2, 3, 4]
>>> first = L.pop(0) # 先頭を取り出す
>>> last = L.pop(-1) # 末尾を取り出す
>>> L # 元のリストからは削除されている
[1, 2, 3]
>>> first, last
(0, 4)
>>>
>>> L.pop() # pop メソッドは引数を省略すると末尾を取り出す
3

先頭や末尾の要素を含まないリストを新たに生成し、元のリストは変更しないようにするにはスライス表記をつかいます。

>>> L = range(5)
>>> L
[0, 1, 2, 3, 4]
>>> L[1:] # 先頭を含まないスライス
[1, 2, 3, 4]
>>> L[:-1] # 末尾を含まないスライス
[0, 1, 2, 3]
>>> L[1:-1] # 先頭削除の両方を含まないスライス
[1, 2, 3]
>>>
>>> L # 元のリストは変更なし
[0, 1, 2, 3, 4]

参考