【问题标题】:What happens when you append a list to itself? [duplicate]当您将列表附加到自身时会发生什么? [复制]
【发布时间】:2015-11-23 13:07:03
【问题描述】:

假设我运行了程序

x=[]

x.append(x)

print(x)

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

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

【问题讨论】:

  • 如果列表是自身的一个元素,它是无限递归的,因此不可能以通常的格式打印出来。

标签: python self-reference


【解决方案1】:

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

【讨论】:

  • ...或者在 Stack Overflow 上结束。
【解决方案2】:

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

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

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

>>> x.append(1)

那么我们有:

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

这里,[...] 只是 Python 表示列表嵌入自身这一事实的方式。

当然还有:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-11
    • 2019-09-17
    • 2016-01-17
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    相关资源
    最近更新 更多