制作列表的列表,其中列表的最后一个值递增

Make a list of lists where the last value of list is incremented

我想制作一个列表列表,其中每个子列表的第二个值都大于其前身的第二个值。 例如 我的 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)

控制台return

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],...]

奥卡姆剃刀:它们看起来都一样的原因是它们相同。

您需要为每次调用 append 创建一个新列表以添加(例如,append([mylist[0],i]))。