在python中将一个列表插入另一个列表的语法是什么?


197

给出两个列表:

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

语法是什么:

  1. 插入xy这样y现在看起来像[1, 2, 3, [4, 5, 6]]
  2. 将所有项目x插入y,使y现在看起来像[1, 2, 3, 4, 5, 6]

反向listB,因此[[listB]中x的listA.insert(pos,x)]
约翰·米


1
@JohnMee你的意思是listA.insert(pos, x) for x in listB[::-1]
wizzwizz4

Answers:


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

问题并没有明确说明您到底想要实现什么。

List具有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的评论应该是被接受的答案。这是将列表插入到任意位置(不只是结尾)的另一个列表中的唯一方法。
weaver

1
@weaver虽然它做的唯一的解决办法(扩大在特定的指数),这不是原来的问题。
florisla

@florisla那是脚。
编织者


3

你也可以做...

x += y

这应该是对已接受答案的评论,因为该评论提及x + yx += y只是同一件事,但仍然存在。
HTNW

我没有做到这一点的声誉,但是如果有人可以做到!
user3707850 '18

2

如果要将列表(列表2)中的元素添加到其他列表(列表)的末尾,则可以使用列表扩展方法

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

或者,如果要串联两个列表,则可以使用+号

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[:])

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.