换句话说,我要完成类似以下内容:有没有办法在python的特定索引处追加/扩展列表与另一个列表?
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]
换句话说,我要完成类似以下内容:有没有办法在python的特定索引处追加/扩展列表与另一个列表?
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]
您可以分配到列表a
的slice像这样:
>>> 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
中的项目,并将它们放置在由[3:3]
表示的列表a
的部分中。此外,Python将根据需要扩展列表a
以适应此操作。
总之,这只是Python的另一个很棒的功能。 :)
如何非常整齐:) – MrDuk 2014-10-28 15:54:25
问这“为什么”这个工作会有多大?我的意思是,直观地说,如果我们采用数组隐喻,这不应该起作用,因为一个元素与另一个元素之间没有“空间”来添加N个以上的元素。显然,python以一种可能的方式实现了列表,但我会问:“规范中是否有某些东西可以让我们预测这应该起作用?” (否则这将是一个黑客)。 +1! – heltonbiker 2014-10-28 15:56:45
@heltonbiker - 让我们仔细查看文档,看看是否记录了此行为。如果没有,我会尝试自己解释。 – iCodez 2014-10-28 16:03:35
尝试使用排序方法如下:
>>> a = [1,2,3,7,8]
>>> b = [4,5,6]
>>> a = sorted(a+b)
>>> a
[1, 2, 3, 4, 5, 6, 7, 8]
为了完整起见,A = A [:3] + B + A [3:]也将工作。 – Totem 2014-10-28 16:23:57