列表列表中有多少个不同的对象?

时间:2017-06-18 21:49:50

标签: python list object reference

我正在学习初学者编程课程中的对象和参考资料,我正在学校学习,我对于什么构成“对象”感到困惑。具体来说,我不确定如何确定列表列表中有多少个对象。

执行以下操作后,有多少个不同的列表对象,其值为[1,2]?

lst1 = [1, 2]
lst2 = [[1, 2], list(lst1), lst1]
lst3 = list(lst2)
lst3.append([1, 2])
lst4 = []

for lst in lst3:
    lst4.append(list(lst))

感谢您的帮助/澄清。

1 个答案:

答案 0 :(得分:0)

不同列表[1,2]的数量为 8 。我们可以通过遍历程序行每行来计算:

lst1 = [1, 2] # we create our first [1,2]

接下来,我们构建列表,例如:

lst2 = [[1, 2], list(lst1), lst1]
#       ^       ^

这里我们创建了两个额外的[1,2]列表(用插入符号^表示)。第一个是另一个[1,2]列表文字,第二个是通过调用list(lst1)。构造函数创建列表的副本,因此新列表[1,2]

接下来,我们制作lst2副本:

lst3 = list(lst2)

我们在这里制作没有新的[1,2]列表:我们创建了一个包含三个元素的新列表,但这些列表都引用了相同的列表{{1 }}

lst2

接下来,我们向lst3.append([1,2]) # ^ 添加 [1,2]。这样就可以将 distinct lst3的总量增加到四个。

接下来,我们将遍历[1,2]并在lst3中为每个元素制作浅层副本。由于lst3有四个不同的lst3个对象,因此我们会引入另外四个[1,2]个对象:

[1,2]

所以我们总得到:

lst4 = []

for lst in lst3:
    lst4.append(list(lst))
    #           ^

内存布局

操作后,内存如下:

Expression | Count
-----------+------
lst1 = ... |     1
lst2 = ... |     2
lst3 = ... |     0
lst3.appe. |     1
for ...    |     4
-----------+------
TOTAL            8