Pythonで1つのリストを別のリストに挿入する構文は何ですか?


197

2つのリストがあるとします。

x = [1,2,3]
y = [4,5,6]

構文は次のとおりです。

  1. 挿入xyなるようにy、今のように見えますか[1, 2, 3, [4, 5, 6]]
  2. すべての項目を挿入xyなるようにy、今のように見えますか[1, 2, 3, 4, 5, 6]

逆listB、そこから[listA.insert(pos、x)for x in [listB]]
John Mee

また、この記事を参照してください。 stackoverflow.com/questions/5805892/...
ジョス・デ・Kloe

1
@JohnMee意味listA.insert(pos, x) for x in listB[::-1]ですか?
wizzwizz4

回答:


360

もしかしてappend

>>> x = [1,2,3]
>>> y = [4,5,6]
>>> x.append(y)
>>> x
[1, 2, 3, [4, 5, 6]]

またはマージしますか?

>>> x = [1,2,3]
>>> y = [4,5,6]
>>> x + y
[1, 2, 3, 4, 5, 6]
>>> x.extend(y)
>>> x
[1, 2, 3, 4, 5, 6] 

3
それは適切ですか、または新しいインスタンスが生成されますか?
DanielMöller17年

7
x.extend(y)所定の位置にあり、x+y新しいリストを返しています。そしてx += y、ここでは言及されなかった、延長に似ています。
WIM

85

質問は、あなたが正確に何を達成したいかを明確にしません。

リストには、append引数をリストに追加するメソッドがあります。

>>> list_one = [1,2,3]
>>> list_two = [4,5,6]
>>> list_one.append(list_two)
>>> list_one
[1, 2, 3, [4, 5, 6]]

引数として渡すリストの項目extendを追加するメソッドもあります。

>>> list_one = [1,2,3]
>>> list_two = [4,5,6]
>>> list_one.extend(list_two)
>>> list_one
[1, 2, 3, 4, 5, 6]

そしてもちろん、insert同様に動作するメソッドがありappendますが、挿入ポイントを指定することができます:

>>> list_one.insert(2, list_two)
>>> list_one
[1, 2, [4, 5, 6], 3, 4, 5, 6]

特定の挿入ポイントでリストを拡張するには、リストのスライスを使用できます(ありがとう、@ florisla)。

>>> l = [1, 2, 3, 4, 5]
>>> l[2:2] = ['a', 'b', 'c']
>>> l
[1, 2, 'a', 'b', 'c', 3, 4, 5]

リストのスライスは、リストのエントリの範囲を別のリストのエントリの範囲で置き換えることができるため、非常に柔軟です。

>>> l = [1, 2, 3, 4, 5]
>>> l[2:4] = ['a', 'b', 'c'][1:3]
>>> l
[1, 2, 'b', 'c', 5]

34
特定の挿入ポイントに「拡張」する場合は、リストスライス構文を使用できます(stackoverflow.com/a/7376026/1075152を参照)
florisla

5
@florislaのコメントは、受け入れられる答えである必要があります。リストを別のリストの任意の場所(末尾だけでなく)に挿入する唯一の方法です。
ウィーバー

1
@weaver (特定のインデックスで拡張する)それを行う唯一の解決策です、それは元の問題ではありませんでした。
florisla

@florislaそれは歩数です。
織工


3

あなたもすることができます...

x += y

これは受け入れられた回答へのコメントであるはずです。なぜなら、それは言及されてx + yおりx += y、同じことですが、適切なものだからです。
HTNW 2017年

私にはそれをする評判はありませんが、他の誰かができるなら!
user3707850 2018

2

リスト(list2)の要素を他のリスト(リスト)の最後に追加する場合は、リスト拡張メソッドを使用できます。

list = [1, 2, 3]
list2 = [4, 5, 6]
list.extend(list2)
print list
[1, 2, 3, 4, 5, 6]

または、2つのリストを連結する場合は、+記号を使用できます

list3 = list + list2
print list3
[1, 2, 3, 4, 5, 6]

0

だけを実行するとx.append(y)、yはxに参照され、yに加えられた変更は追加されたxにも影響します。したがって、要素のみを挿入する必要がある場合は、以下を実行する必要があります。

x = [1,2,3] y = [4,5,6] x.append(y[:])

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.