【Python】リストの基本操作(要素追加、要素取得)
pythonのlistの基本的な操作である要素の追加と要素の取得方法について。
なおリストなミュータブルなので、リストを操作する場合、破壊的な操作なのかどうかを常に意識しながら書いた方が、思わぬバグが減りやすい。
https://docs.python.org/ja/3/library/stdtypes.html?highlight=list#typesseq-mutable
要素追加
要素の追加はappendかinsertがある。
またリスト同士を連結する方法もある。
appendで要素追加
appendで要素を追加する場合、必ず末尾に要素が追加される。
1list_a = [0, 1, 2, 3, 4]
2
3# appendで末尾に追加
4list_a.append(5)
5print(f"{list_a=}")
6# list_a=[0, 1, 2, 3, 4, 5]
insertで要素追加
insertで要素を追加する場合、追加するインデックスを指定できる。
insertは追加する場所を指定できて便利だが、乱用するとデータ構造が分かりにくくなる可能性があるので注意。
1# i番目の要素の前にxを追加する
2list.append(i, x)
indexに正の値を指定
1list_a = [0, 1, 2, 3, 4]
2# リストの0番目に9を追加
3list_a.insert(0, 9)
4print(f"{list_a=}")
5# list_a=[9, 0, 1, 2, 3, 4]
上記の例の場合、正確には、0番目のインデックスの前に値を追加することになる。
indexに負の値を指定
インデックスには負数を指定することも可能。
1list_a = [0, 1, 2, 3, 4]
2list_a.insert(-1, 10)
3print(f"{list_a=}")
4# list_a=[0, 1, 2, 3, 10, 4]
この場合、「-1」番目(一番末尾)のインデックスの前に値を追加することになる。
indexに元リストよりも大きな値を指定
元のリストよりも大きなインデックスを指定すると、末尾に要素が追加される。
1list_a = [0, 1, 2, 3, 4]
2list_a.insert(10, 10)
3print(f"{list_a=}")
4# list_a=[0, 1, 2, 3, 4, 10]
要素入替
インデックス番号を指定することで、要素を入れ替えることができる。
1list_a = [0, 1, 2, 3, 4]
2# 末尾の要素を「5」に入れ替え
3list_a[-1] = 5
4# list_a=[0, 1, 2, 3, 5]
インデックスをスライス指定することで、複数の値を入れ替えることも可能。
1list_a = [0, 1, 2, 3, 4]
2list_a[2:4] = [5]
3# list_a=[0, 1, 5, 4]
要素取得
インデックスを指定したり、popを使うことでリストの要素を取得できる。
popをすると、元のリストも変更される。
index指定で要素取得
インデックスを指定することで値を取得する。
当然、元のリストが変更されることはない。
1list_a = [0, 1, 2, 3, 4]
2value = list_a[0]
3print(f"{list_a=}")
4print(f"{value=}")
5# list_a=[0, 1, 2, 3, 4]
6# value=0
スライスでインデックスを範囲指定して取得することも可能。
1list_a = [0, 1, 2, 3, 4]
2values = list_a[:-3]
3print(f"{list_a=}")
4print(f"{values=}")
5# list_a=[0, 1, 2, 3, 4]
6# values=[0, 1]
インデックスをスライスで指定した場合、取得した値はリストになる。
popで要素取得
popはリストから値を取得する時に、元のリストから取得した値がなくなる。
1# i番目の値を取得。デフォルト値は-1なので、末尾の値が取り出される。
2list.pop(i)
3
4list_a = [0, 1, 2, 3, 4]
5# 末尾の要素を取り出し
6value = list_a.pop()
7print(f"{list_a=}")
8print(f"{value=}")
9# list_a=[0, 1, 2, 3]
10# value=4
取得した値が元のリストからなくなる。
1list_a = [0, 1, 2, 3, 4]
2# 先頭の要素を取り出し
3value = list_a.pop(0)
4print(f"{list_a=}")
5print(f"{value=}"
6# list_a=[1, 2, 3, 4]
7# value=0)