【发布时间】:2022-01-18 17:24:58
【问题描述】:
我想制作一个列表列表,其中每个子列表的第二个值都大于其前任的第二个值。 例如 我的 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],...]
【问题讨论】:
-
嗨 gionni,它可能会,我想我必须先研究产量,因为我无法获得该答案的任何功能来做任何事情。
-
生成器不重要,重要的是引用的解释
-
嗨 gionni,所以我的列表列表实际上类似于 [[ref to mylist], [ref to mylist]...] 并且每次更新 mylist 时都会将更新传递给每个列表在列表列表中,因为这些子列表更新了相同的参考?
标签: python list nested-lists