2009-11-21 245 views
0
L = ['abc', 'ADB', 'aBe'] 

L[len(L):]=['a1', 'a2'] # append items at the end... 
L[-1:]=['a3', 'a4'] # append more items at the end... 

...作品,但 'A2' 在輸出丟失:追加到一個列表

['abc', 'ADB', 'aBe', 'append', 'a1', 'a3', 'a4'] 
+0

爲什麼不使用Python的名單追加和擴展功能。 – MitMaro 2009-11-21 05:41:52

回答

3

我認爲-1指向列表的最後一個元素,它被'a3'覆蓋。如上所述here,你可以做一個

list.extend(['a3', 'a4']) 
+1

好的。 +1 - – MitMaro 2009-11-21 05:42:37

1

什麼是錯的:

L.append('a1') 

L += ['a1', 'a2'] 
+1

追加,但我正在學習如此測試各種方法; +創建一個新列表,因此它比就地更換更慢。 – 3zzy 2009-11-21 05:44:36

+0

+可能會創建一個新列表,但@Pynt發佈的+ =不會。 – PaulMcG 2009-11-21 06:34:47

1

要將項目追加到列表中,您可以使用+

L + ["a1","a2"] 
1

你的第三個分配覆蓋「A2」值。

也許你應該使用一個更簡單的方法:

L = ['abc', 'ADB', 'aBe'] 
L += ['a1', 'a2'] 
L += ['a3', 'a4'] 
Etc. 
3

使用L.append(單個元素)或L.extend(一個序列) - 但絕對沒有呼叫玩花哨「分配-TO-切片「技巧(特別是如果你不掌握它們 - )。切片[-1:]的意思是「最後一個元素包括」 - 因此,通過分配該切片,顯然「覆蓋」了最後一個元素!

0

使用擴展方法

L = ['abc', 'ADB', 'aBe'] 
L.extend(['a1', 'a2']) 
L.extend(['a3', 'a4'])