2015-05-05 18 views
-1

我正在玩一些基本的python方法。 現在我正在試驗.extend()方法。我基本上有兩個列表,並希望將它們組合成一個更大的列表用於演示目的。 這可以在Shell環境中成功(成功返回擴展列表),但不能在保存程序時使用。當我想保存程序並運行它時,它會返回'None'的值。任何援助將不勝感激。謝謝。.extend()方法返回'None'而不是所需的列表組合我打算返回

listOne=[1,2,3] 

listTwo=[4,5,6] 

listOneandlistTwo=listOne.extend(listTwo) 

print(listOneandlistTwo) 
+3

'extend()'修改了一個'list',而不是返回一個新的。只是'print()'修改後的'listOne'。 – TigerhawkT3

+0

謝謝。畢竟我是初學者。 – freshexistence

+0

這就在文檔中。 'help(list)','help(list.extend)',或者在線文檔中查找它會告訴你答案。 – abarnert

回答

4
listOneandlistTwo=listOne.extend(listTwo) 

extend()延伸給定的名單,但返回None *,所以你已經擴展listOnelistTwo內容並分配給NonelistOneandListTwo

你想要的(假設你要離開listOnelistTwo,因爲它們是)這是什麼:

listOneandlistTwo = listOne + listTwo 

*此行爲是由設計。如果extend()返回擴展列表,它會返回一個擴展的副本嗎?或者它會返回原始列表擴展?這是另一個需要記住的細節,所以通過返回None你可能會想:「哦,因爲它返回None它必須擴展名單,否則它就沒用了。」

+0

設計的原因稍微複雜一點。變異的方法和函數返回'None',所以你不能忘記它們是變異的,所以你不能將它們鏈接在一起,用沒有格式的長行水平混亂替換你的良好縮進的垂直流,以指導讀者。 – abarnert

+0

「不能忘記他們在變異」是總結我所說的一個好方法,我只是試圖讓它更加友好。 – kindall

+0

稍微偏離主題:我一直認爲mutators應該返回'None',但是在我的Barron的AP CompSci(用Java測試)的書中,它們總是會返回突變的結果而不是「null」 '。你認爲他們這樣做有什麼理由嗎?也許這個規則只適用於Python? – pzp

相關問題