Pythonのリストに値を挿入する方法
本記事では、Pythonのリストに値を挿入する方法について解説します。
append()メソッドを使った値の追加
値をリストの末尾に追加するには、append()
メソッドを使用します。
基本構文
list.append(value)
使い方
my_list = [1, 2, 3, 8, 7, 5, 10]
my_list.append(6)
print(my_list) # [1, 2, 3, 8, 7, 5, 10, 6]
insert()メソッドを使ったリストへの値の挿入
insert()
メソッドを使用すると、リストの特定の位置に値を挿入できます。指定したインデックスがリストのサイズを超えた場合、値はリストの末尾に追加されます。
基本構文
list.insert(index, value)
使い方
my_list = [1, 7, 3, 8, 7, 5, 10]
my_list.insert(3, 9)
print(my_list) # [1, 7, 3, 9, 8, 7, 5, 10]
my_list.insert(100, 100)
print(my_list) # [1, 7, 3, 9, 8, 7, 5, 10, 100]
スライス代入を使ったリストへのリストの挿入
スライス代入を使うことで、リストの任意の位置にリストを挿入できます。
基本構文
リスト[開始インデックス:終了インデックス] = 置き換えるリスト
使い方
次のサンプルでは、インデックス=3の位置にリストを挿入しています。
my_list = [1, 2, 3, 8, 7, 5, 10]
my_list[3:3] = [5, 6, 7]
print(my_list) # [1, 2, 3, 5, 6, 7, 8, 7, 5, 10]
終了インデックスを開始インデックスと違う値にすると挿入ではなく、置換になります。終了インデックスの位置の値は残ります。
my_list = [1, 2, 3, 8, 7, 10]
my_list[3:4] = [4, 5, 6]
print(my_list) # [1, 2, 3, 4, 5, 6, 7, 10]
リスト内の値がある位置を取得する
index()
メソッドを使用すると、リスト内の任意の値がある位置を取得できます。
my_list = [1, 2, 3, 8, 7, 5, 10]
index = my_list.index(7)
print(index) # 4
同じ値が複数ある場合は、最初に見つかったインデックスが返されます。
my_list = [1, 7, 3, 8, 7, 5, 10]
index = my_list.index(7)
print(index) # 1
存在しない値を指定するとエラーになります。
my_list = [1, 7, 3, 8, 7, 5, 10]
index = my_list.index(11)
print(index) # ValueError: 11 is not in list
任意の値を順序リストに挿入する
Pythonで昇順に並んだ数値リストに新しい数値を挿入する際、その数値が入るべきインデックスを取得するには、bisect
モジュールを使用するのが便利です。
import bisect
sorted_list = [1,3,5,7]
new_Value = 4
index = bisect.bisect(sorted_list, new_Value)
sorted_list[index:index] = [new_Value]
print(index, sorted_list) # 2 [1, 3, 4, 5, 7]
空のリストでも問題なく使用できます。
import bisect
sorted_list = []
new_Value = 4
index = bisect.bisect(sorted_list, new_Value)
sorted_list[index:index] = [new_Value]
print(index, sorted_list) # 0 [4]