将列表附加到自身后会发生什么?

时间:2015-08-28 19:17:35

标签: python self-reference

假设我运行了程序

x=[]

x.append(x)

print(x)

我得[[...]]作为输出。但是这是什么意思?列表是否存储指针然后指向自身?或者它是否从未完全复制?该列表如何存储在内存中?

修订: 我试图了解python如何完成这个自我引用。如果我想设计一种存储允许自引用的列表的方法,我会将变量存储为一对值,即数据类型和值。如果数据类型是int,则该值表示存储的整数但如果数据类型是列表,我会说存储的值应该是指针但指向哪里?列表的开头就像在C?

2 个答案:

答案 0 :(得分:1)

Python列表包含对象的引用(类似于指针)。列表可以引用自身。只是不要尝试递归遍历列表,否则最终会出现堆栈溢出。

答案 1 :(得分:0)

我认为如果将另一个元素添加到列表中,您看到的输出会变得更清晰。你有:

>>> x = []
>>> x.append(x)
>>> x
[[...]]

如果我们将另一个值附加到x

>>> x.append(1)

然后我们有:

>>> x
[[...], 1]

在这里,[...]只是Python表示列表嵌入其中的事实。

当然:

>>> x[0]
[[...], 1]
>>> x[0][0][0]
[[...], 1]
>>>