Python

【Python】リストの基本操作(要素追加、要素取得)

pythonのlistの基本的な操作である要素の追加と要素の取得方法について。

なおリストなミュータブルなので、リストを操作する場合、破壊的な操作なのかどうかを常に意識しながら書いた方が、思わぬバグが減りやすい。

 

https://docs.python.org/ja/3/library/stdtypes.html?highlight=list#typesseq-mutable

要素追加

要素の追加はappendかinsertがある。

またリスト同士を連結する方法もある。

appendで要素追加

appendで要素を追加する場合、必ず末尾に要素が追加される。

list_a = [0, 1, 2, 3, 4]

// appendで末尾に追加
list_a.append(5)
print(f"{list_a=}")
-> list_a=[0, 1, 2, 3, 4, 5]

 

insertで要素追加

insertで要素を追加する場合、追加するインデックスを指定できる。

insertは追加する場所を指定できて便利だが、乱用するとデータ構造が分かりにくくなる可能性があるので注意。

// i番目の要素の前にxを追加する
list.append(i, x)

indexに正の値を指定

list_a = [0, 1, 2, 3, 4]
// リストの0番目に9を追加
list_a.insert(0, 9)
print(f"{list_a=}")
-> list_a=[9, 0, 1, 2, 3, 4]

上記の例の場合、正確には、0番目のインデックスの前に値を追加することになる。

indexに負の値を指定

インデックスには負数を指定することも可能。

list_a = [0, 1, 2, 3, 4]
list_a.insert(-1, 10)
print(f"{list_a=}")
-> list_a=[0, 1, 2, 3, 10, 4]

この場合、「-1」番目(一番末尾)のインデックスの前に値を追加することになる。

indexに元リストよりも大きな値を指定

元のリストよりも大きなインデックスを指定すると、末尾に要素が追加される。

list_a = [0, 1, 2, 3, 4]
list_a.insert(10, 10)
print(f"{list_a=}")
-> list_a=[0, 1, 2, 3, 4, 10]

 

要素入替

インデックス番号を指定することで、要素を入れ替えることができる。

list_a = [0, 1, 2, 3, 4]
// 末尾の要素を「5」に入れ替え
list_a[-1] = 5
-> list_a=[0, 1, 2, 3, 5]

 

インデックスをスライス指定することで、複数の値を入れ替えることも可能。

list_a = [0, 1, 2, 3, 4]
list_a[2:4] = [5]
list_a=[0, 1, 5, 4]

 

要素取得

インデックスを指定したり、popを使うことでリストの要素を取得できる。

popをすると、元のリストも変更される。

index指定で要素取得

インデックスを指定することで値を取得する。

当然、元のリストが変更されることはない。

list_a = [0, 1, 2, 3, 4]
value = list_a[0]
print(f"{list_a=}")
print(f"{value=}")
list_a=[0, 1, 2, 3, 4]
value=0

 

スライスでインデックスを範囲指定して取得することも可能。

list_a = [0, 1, 2, 3, 4]
values = list_a[:-3]
print(f"{list_a=}")
print(f"{values=}")
list_a=[0, 1, 2, 3, 4]
values=[0, 1]

インデックスをスライスで指定した場合、取得した値はリストになる。

 

popで要素取得

popはリストから値を取得する時に、元のリストから取得した値がなくなる。

// i番目の値を取得。デフォルト値は-1なので、末尾の値が取り出される。
list.pop(i)

 

list_a = [0, 1, 2, 3, 4]
// 末尾の要素を取り出し
value = list_a.pop()
print(f"{list_a=}")
print(f"{value=}")
list_a=[0, 1, 2, 3]
value=4

取得した値が元のリストからなくなる。

list_a = [0, 1, 2, 3, 4]
// 先頭の要素を取り出し
value = list_a.pop(0)
print(f"{list_a=}")
print(f"{value=}")
list_a=[1, 2, 3, 4]
value=0