Python – リストにリストを挿入する

Pocket

リストの途中に別のリストを挿入して1つのリストを作りたい、と思ったのだが、ちょっとつまづいたのでメモ。

>>> l1 = [0,1,2,3,4,5]
>>> l2 = ["a","b","c","d"]
>>> l1[2] = l2
>>> l1
[0, 1, ['a', 'b', 'c', 'd'], 3, 4, 5]

このようにインデックスを指定して別のリストを代入すると入れ子になる。元の要素l1[2]は上書きされる。

>>> l1.insert(2,l2)
>>> l1
[0, 1, ['a', 'b', 'c', 'd'], 2, 3, 4, 5]

リストのinsertメソッドを使っても結果は同じく入れ子。元の要素l1[2]は上書きされず、その直前にリストが挿入される。

>>> l1[2:2] = l2
>>> l1
[0, 1, 'a', 'b', 'c', 'd', 2, 3, 4, 5]

スライスを使うとうまくいく。ただし、上の例ではリストl2がl1[2]の直前に挿入されるので、l1[2]も上書きしたい場合は、l1[2:3] = l2とする。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください