2014-10-28 43 views

回答

12

您可以分配到列表aslice像這樣:

>>> 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的另一個很棒的功能。 :)

+0

如何非常整齊:) – MrDuk 2014-10-28 15:54:25

+3

問這「爲什麼」這個工作會有多大?我的意思是,直觀地說,如果我們採用數組隱喻,這不應該起作用,因爲一個元素與另一個元素之間沒有「空間」來添加N個以上的元素。顯然,python以一種可能的方式實現了列表,但我會問:「規範中是否有某些東西可以讓我們預測這應該起作用?」 (否則這將是一個黑客)。 +1! – heltonbiker 2014-10-28 15:56:45

+0

@heltonbiker - 讓我們仔細查看文檔,看看是否記錄了此行爲。如果沒有,我會嘗試自己解釋。 – iCodez 2014-10-28 16:03:35

2

嘗試使用排序方法如下:

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