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とする。

コメントを残す

メールアドレスが公開されることはありません。