2013-05-18 66 views
61

我:如何將多個項目中追加一條線在Python

count = 0 
i = 0 
while count < len(mylist): 
    if mylist[i + 1] == mylist[i + 13] and mylist[i + 2] == mylist[i + 14]: 
     print mylist[i + 1], mylist[i + 2] 
    newlist.append(mylist[i + 1]) 
    newlist.append(mylist[i + 2]) 
    newlist.append(mylist[i + 7]) 
    newlist.append(mylist[i + 8]) 
    newlist.append(mylist[i + 9]) 
    newlist.append(mylist[i + 10]) 
    newlist.append(mylist[i + 13]) 
    newlist.append(mylist[i + 14]) 
    newlist.append(mylist[i + 19]) 
    newlist.append(mylist[i + 20]) 
    newlist.append(mylist[i + 21]) 
    newlist.append(mylist[i + 22]) 
    count = count + 1 
    i = i + 12 

我想使newlist.append()語句轉換成幾個語句。

+0

很明顯嘛,如果你得到不同的結果,這是不一樣的。 – JJJ

+0

這是無效的語法。 – TerryA

+4

假設你的對象是列表,你的代碼不是有效的Python,因爲你使用'[]'而不是'()'。請發佈實際工作代碼。 – BrenBarn

回答

151

否。追加整個序列的方法是list.extend()

>>> L = [1, 2] 
>>> L.extend((3, 4, 5)) 
>>> L 
[1, 2, 3, 4, 5] 
+0

「插入」功能爲「追加」,但添加到列表的開頭。是否有一個函數可以將多個值添加到列表的開頭? – sparrow

+0

@sparrow:不用切片分配。 –

4

首先,append是一個函數,所以你不能寫append[i+1:i+4],因爲你正在試圖獲得的不是一個序列的事情切片。 (你不能得到它的一個元素,或者:append[i+1]由於相同的原因是錯誤的。)當你調用一個函數時,參數在括號,即圓形:()。第二,你試圖做的是「採取一個序列,並將其中的每個元素放在其他序列的末尾,按原始順序」。這是拼寫爲extendappend是「拿這個東西,並把它放在列表末尾,作爲單個項目,即使它也是列表」。 (回想一下,列表是一種序列。)

但是,然後,你需要知道i+1:i+4是一個特殊的結構,只出現在方括號內(從序列中獲取切片)和大括號(創建一個dict對象)。你不能將它傳遞給一個函數。所以你不能用extend。您需要對這些值進行一系列的處理,並且自然的方法是使用range函數。

1

你還可以:

newlist += mylist[i:i+22] 
相關問題