2014-09-29 66 views
0

列表我碰到下面的代碼已經:插入元素在Python

b = [4,5,6] 
b[-1:-1] = [5] 
print b 

,輸出:

b = [4,5,5,6]

要嘗試理解發生了什麼事,我換2號線到b[-1:-2],b[-1:-3],發現打印的b仍然是一樣的。我真的不明白第二行的作用。

此外,當我更改b[-1:-1] = 5時,發生錯誤,我不清楚爲什麼會出現這種情況。

謝謝你

+0

基本上[]符號訪問列表的一個片段,而負整數給出列表末尾的數字。 錯誤是,因爲你必須分配itterables,在這種情況下b [-1:-1] = b [-1:-2] = [] – Dschoni 2014-09-29 12:29:55

回答

0

這是經典的字符串/數組切片問題。 當你做b[-1:-1]它說給我一個字符串從倒數第二個元素倒數第二個元素在這種情況下是空的。並分配/替換該列表與新列表[5]。

其他選項也一樣。

最後一條語句

b[-1:-1]=5 

說,給我一個名單,併爲其分配elememt。所以類型不匹配會發生錯誤。

+0

但不應該使用'b [-1:-3] = [5]'給我一個錯誤,因爲我正在尋找將單個元素放入包含2個元素的字符串中?我不明白這部分是如何工作的。 – user131983 2014-09-29 12:48:42

+1

斯普利特總是從左到右工作,第一個參數應該少於返回空列表的第二個參數。所以b [-1:-3]說讓我從第二個索引到第四個最後一個索引的字符串,但由於第二個參數是較小的空列表返回。相反,如果你寫b [-3,-1]它會給你2個元素 – Abhi 2014-09-29 12:56:22