python - 省略号 [...] 在列表中是什么意思?

我在玩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/

相关文章:

linux - 在 Unix 中,我可以在一个目录中运行 'make' 而不先 cd'ing 到那个

python - 如何从 Python 中的函数返回两个值?

linux - 在 Unix/Linux 中判断两个文件是否具有相同内容的最快方法?

linux - 如何在 Linux 中为每个输出行列出一个文件名?

python - 在 Python 中换行

linux - 如何为 wget 设置代理?

python - 字典和默认值

python - 仅列出当前目录中的文件

c - socket编程中AF_INET和PF_INET有什么区别?

python - 转置列表列表