Python: リストの途中に要素を挿入する insert()の使い方

Pythonでリストの途中に新たな要素を挿入する場合、 リストオブジェクトのinsert()メソッドを使用します。 ここではinsert()メソッドの使い方を紹介します。

insert()の書式とサンプルコード

書式
リスト.insert(インデックス, 値)

第1引数にインデックスを指定し、第2引数に挿入する「値」を指定します。 insert()の戻り値はNoneです。

insertでは指定したインデックスの要素の直前に挿入されます。 先頭要素として挿入したい場合はインデックスに「0」を指定し、 2番目の要素として挿入したい場合はインデックスに「1」を指定します。
要素数以上のインデックスを指定した場合は末尾に追加されます。

li  = ["a", "b", "c"]

# 2番目に挿入
li.insert(1, "x")

print(li) # ['a', 'x', 'b', 'c']

# 4番目に挿入
li.insert(3, "y")

print(li) # ['a', 'x', 'b', 'y', 'c']

# 要素数以上のインデックスを指定
li.insert(10, "z")

print(li) # ['a', 'x', 'b', 'y', 'c', 'z']

insert()の戻り値は?

insert()メソッドの戻り値は「None」です。 Noneなので戻り値を取得しても特に意味はありません。 通常は戻り値を受け取らずに 「リスト.insert(インデックス, 値)」と記述します。

試しにinsertの戻り値を取得してみます。

li  = ["a", "b", "c"]

re = li.insert(1, "x")

print(li) # ['a', 'x', 'b', 'c']
print(re) # None

insert()で複数の値を挿入できる?

insert()で挿入できるのは「1つの値」です。 複数の値をまとめて追加することはできません。

「insert(1, "x", "y")」のように 第2引数以降にカンマ区切りでさらに値を指定するとエラーが発生します。

li  = ["a", "b", "c"]

li.insert(1, "x", "y") # エラー

# 実行結果 エラーメッセージ
TypeError: insert expected 2 arguments, got 3

リストの末尾に追加する場合

リストの末尾に要素を追加する場合、 一般的にはappend()を使いますが insert()でも可能です。
append()のコード例は次の通りです。

li  = ["a", "b", "c"]

li.append("d")

print(li) # ['a', 'b', 'c', 'd']
関連記事: リストの末尾に要素を追加する append()の使い方

上のコードをinsert()を使って書くと次のようになります。 インデックスを指定する部分にlen()関数を使って「len(リスト)」を指定します。

li  = ["a", "b", "c"]

li.insert(len(li),"d")

print(li) # ['a', 'b', 'c', 'd']
Python