有没有办法在python中的特定索引处附加/扩展带有另一个列表的列表?

时间:2014-10-28 15:51:37

标签: python list

换句话说,我想完成以下内容:

a = [1, 2, 3, 7, 8]
b = [4, 5, 6]
# some magic here to insert list b into list a at index 3 so that
a = [1, 2, 3, 4, 5, 6, 7, 8]

2 个答案:

答案 0 :(得分:12)

您可以像这样分配slice列表a

>>> a = [1, 2, 3, 7, 8]
>>> b = [4, 5, 6]
>>> a[3:3] = b
>>> a
[1, 2, 3, 4, 5, 6, 7, 8]
>>>

[3:3]可能看起来很奇怪,但有必要将列表b中的项正确插入列表a。否则,如果我们要分配到a的索引,则会插入列表b本身:

>>> a = [1, 2, 3, 7, 8]
>>> b = [4, 5, 6]
>>> a[3] = b
>>> a
[1, 2, 3, [4, 5, 6], 8]
>>>

我试图找到明确提到这种行为的文档链接,但是没有成功(如果你能找到它,请随意添加一个)。所以,我只是说做a[3:3] = b告诉Python取列表b中的项目并将它们放在a所代表的列表[3:3]部分中。此外,Python将根据需要扩展列表a以适应此操作。

简而言之,这只是Python的另一个很棒的功能。 :)

答案 1 :(得分:2)

尝试使用sort方法,如下所示:

>>> a = [1,2,3,7,8]
>>> b = [4,5,6]
>>> a = sorted(a+b)
>>> a
[1, 2, 3, 4, 5, 6, 7, 8]