假设我运行了程序
x=[]
x.append(x)
print(x)
我得[[...]]作为输出。但是这是什么意思?列表是否存储指针然后指向自身?或者它是否从未完全复制?该列表如何存储在内存中?
修订: 我试图了解python如何完成这个自我引用。如果我想设计一种存储允许自引用的列表的方法,我会将变量存储为一对值,即数据类型和值。如果数据类型是int,则该值表示存储的整数但如果数据类型是列表,我会说存储的值应该是指针但指向哪里?列表的开头就像在C?
答案 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]
>>>