我想制作一個串列串列,其中每個子串列的第二個值大于其前任的第二個值。例如我的 list_of_lists = [[1, 1], [1, 2], [1, 3], [1, 4],...]
我認為這會做到,但我不明白為什么它沒有附加正確的當前版本的串列。
我要感謝 Scott 和 gionni 所做的作業,他們幫助我理解為什么我的嘗試是錯誤的,以及物件參考在這方面的關鍵作用。
代碼
mylist = [1,1]
mylist_of_lists = []
for i in list(range(1,11,1)):
print("i: ", i)
mylist[1] = i
print("mylist : ", mylist)
mylist_of_lists.append(mylist)
print("mylist_of_lists : ", mylist_of_lists)
print(mylist_of_lists)
控制臺回傳
i: 1
mylist : [1, 1]
mylist_of_lists : [[1, 1]]
i: 2
mylist : [1, 2]
mylist_of_lists : [[1, 2], [1, 2]]
i: 3
mylist : [1, 3]
mylist_of_lists : [[1, 3], [1, 3], [1, 3]]
i: 4
mylist : [1, 4]
mylist_of_lists : [[1, 4], [1, 4], [1, 4], [1, 4]]
i: 5
mylist : [1, 5]
mylist_of_lists : [[1, 5], [1, 5], [1, 5], [1, 5], [1, 5]]
i: 6
mylist : [1, 6]
mylist_of_lists : [[1, 6], [1, 6], [1, 6], [1, 6], [1, 6], [1, 6]]
i: 7
mylist : [1, 7]
mylist_of_lists : [[1, 7], [1, 7], [1, 7], [1, 7], [1, 7], [1, 7], [1, 7]]
i: 8
mylist : [1, 8]
mylist_of_lists : [[1, 8], [1, 8], [1, 8], [1, 8], [1, 8], [1, 8], [1, 8], [1, 8]]
i: 9
mylist : [1, 9]
mylist_of_lists : [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]
i: 10
mylist : [1, 10]
mylist_of_lists : [[1, 10], [1, 10], [1, 10], [1, 10], [1, 10], [1, 10], [1, 10], [1, 10], [1, 10], [1, 10]]
[[1, 10], [1, 10], [1, 10], [1, 10], [1, 10], [1, 10], [1, 10], [1, 10], [1, 10], [1, 10]]
期望輸出
我的 list_of_lists = [[1, 1], [1, 2], [1, 3], [1, 4],...]
uj5u.com熱心網友回復:
奧卡姆剃刀:他們看起來都一樣的原因是,它們都是相同的。
您需要為每個append要添加的呼叫創建一個新串列(例如,append([mylist[0],i]))。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/382197.html
上一篇:值不堅持串列的回傳值(C#)
