我在玩python。我在 IDLE 中使用了以下代码:
p = [1, 2]
p[1:1] = [p]
print p
输出是:
[1, [...], 2]
这是什么[…]
?有趣的是,我现在可以将其用作列表列表,直到无穷大,即
p[1][1][1]....
上面的内容我想写多少就写多少,它仍然可以工作。
编辑:
最佳答案
这是您的代码创建的
这是一个列表,其中第一个和最后一个元素指向两个数字(1 和 2),中间元素指向列表本身。
在 Common Lisp 中,当启用打印循环结构时,这样的对象将被打印为
#1=#(1 #1# 2)
表示有一个对象(用 #1=
标记为 1)是一个包含三个元素的向量,第二个是对象本身(用 #1#)。
在 Python 中,您只需使用 [...]
获得结构是循环的信息。
在这种特定情况下,描述不是模棱两可的(它向后指向一个列表,但只有一个列表,所以它必须是那个)。然而,在其他情况下可能会模棱两可......例如在
[1, [2, [...], 3]]
后向引用可以指向外部或内部列表。 这两种以相同方式打印的不同结构可以使用
x = [1, [2, 3]]
x[1][1:1] = [x[1]]
y = [1, [2, 3]]
y[1][1:1] = [y]
print(x)
print(y)
他们会在内存中
https://stackoverflow.com/questions/17160162/