2014-02-27 21 views
1
x=[1,2,3] 
x.extend('a') 

輸出:Python - 直接擴展列表導致無,爲什麼?

x is [1,2,3,'a'] 

但是,當我做到以下幾點:

[1,2,3].extend('a') 

輸出:

None 

爲什麼在列表參考延伸的工作,但不能在清單?

第2部分:

我發現這一點,因爲我想一個數組listB追加到,同時listA的嘗試listC擴展到數組listB。

listA.append([listB[15:18].extend(listC[3:12])]) 

假設列表不能直接附加/擴展。什麼是解決這個問題最流行的解決方案?

+0

如果您正在使用print [1,2,3] .extend('a')',那麼'None'是print語句的輸出。因爲'extend'的返回類型是'None' – fledgling

+1

Python中的一個約定是,變異序列的方法返回'None'。更多[這裏](http://stackoverflow.com/questions/9299919/add-number-to-set/9300257#9300257)。 –

回答

4

list.extend修改該列表並返回任何內容,從而導致None。在第二種情況下,它是一個正在擴展的臨時列表,在該行之後立即消失,而在第一種情況下,它可以通過x進行引用。

將listB附加到listA,同時嘗試將listC擴展到listB。

而不是使用extend的,你可能想試試這個:

listA.append(listB[15:18] + listC[3:12]) 

還是做多簡單的線條與extend如果要實際修改listBlistC

0

extend將自行擴展列表。該方法的返回類型是None

如果要將union列出並將該列表添加到另一個列表,則必須使用其他方式添加。

listB[15:18] = listC[3:12] 
listA.extend(listB) 
相關問題