換句話說,我要完成類似以下內容:有沒有辦法在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