我有一個數字列表,我想提取N元素作爲列表,並將它們存儲在另一個列表中。 例子:將列表附加到列表
list1 = [1,2,3,4,5,6,7,8,9]
resultList = [[1,2,3],[4,5,6],[7,8,9]]
我已經做了以下
def getLines(square, N):
i = 0
line = [None]*N
lines = list()
for elt in square:
line[i] = elt
i += 1
if i == N:
lines.append(line)
i = 0
return lines
爲什麼我總是最後一個列表三次
[[7,8,9],[7,8,9],[7,8,9]]
當我打電話的功能getLines(list1, 3)
。
我也試圖消除臨時列表,直接添加元素這樣的:
def getLines(square, N):
i = 0
j = 0
lines = [[None]*N]*N # Need to be initialized to be able to index it.
for elt in square:
lines[i][j] = elt
j += 1
if j == N:
i += 1
j = 0
return lines
最後一組將繼續出現ñ倍。有關如何解決這個問題的任何提示?
謝謝你的解釋。但爲什麼「行」只附加最後一行「行」?我每次都在改變「行」,不應該每次都附加(在if語句中)? – Ouss4
@ Ouss4這不是你應該看到的方式。有一個關鍵的區別(這將是你通過解決這個問題學到的具體的東西),命名一個對象和單獨分配給一個對象中的一個項目。 – Roberto
@ Ouss4試圖看到它是這樣的: 我有一隻叫做毛茸茸的貓。 (1)我會在上面放一頂綠色的帽子。 我會在Fluffy有一個鏡像點。 (2)現在我要在它上面放一個小丑帽子。 我在Fluffy會有第二個鏡像點。 (3)現在,我要打扮成芭蕾舞演員。 我在Fluffy會有第三個鏡像點。 (4)奇怪的是,所有的三面鏡子都顯示出蓬鬆扮成芭蕾舞演員。 ...所以爲了這個工作,你需要使用三隻貓(三個不同的物體),而不是改變同一只貓的帽子。 – Roberto