[爆卦]Python append n是什麼?優點缺點精華區懶人包

為什麼這篇Python append n鄉民發文收入到精華區:因為在Python append n這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者kanako (我是香民)看板Python標題[問題] 關於對list重複append的問題時間...


各位好

最近工作時需要產生一組list,規則如下
N=0 輸出空list
N=1 輸出[[1]]
N=2 輸出[[0,0], [1,0], [2,0], [0,1], [1,1], [2,1], [0,2], [1,2], [2,2]]
依此類推
以下是我的code(輸出會缺[0,0])

N=2
series = [0] * N
result = []
while sum(series) != N*N:
for i in range(N):
if series[i] < N:
series[i] += 1
break
else:
series[i] = 0
print(series) #此處的輸出都是正確的
result.append(series)
print(result) #每次append都會蓋過前面的元素

結果result裡面的值是
[[2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]]

第一次遇到這種狀況,我找不到result的值何時被重設,append也不應該蓋過前面的值
請問一下各位高手,我的code錯誤在那邊,感謝

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.104.27.82 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1631633391.A.342.html
s0914714: result要用extend 09/14 23:52
cuteSquirrel: 倒數第二行改成 result.append(series[::]) 09/14 23:54
s0914714: 抱歉 2樓才是對的 09/14 23:56
cuteSquirrel: 原因是series實際上是一個reference, 09/14 23:56
cuteSquirrel: 舊的寫法會因為series一直計算更新內容,導致result 09/14 23:57
cuteSquirrel: 只會指向最後一次計算結果,也就是[2,2] 09/14 23:58
感謝各位,現在才知道原來list是指標,等於我每次append都新增同一組值
TitanEric: 不要用* 用list comprehension 09/15 00:21
※ 編輯: kanako (112.104.27.82 臺灣), 09/15/2021 00:32:22
lycantrope: list還可以包含list自身就會[...] 09/15 07:34
poototo: * 要注意就是了,看自己對可變容器的用法需求 09/16 08:41
garyhsu1209: result = [[i, j] for i in range(3) for j in range 09/17 22:07
garyhsu1209: (3)] 09/17 22:07
garyhsu1209: 一行收工 09/17 22:08
garyhsu1209: 我[i ,j]寫反了,要改成[j, i] 09/17 22:10

你可能也想看看

搜尋相關網站