为什么在打印时附加一个列表显示?

Hei*_*h-B 3 python list python-2.7 python-3.x

当我使用以下代码添加列表时.

a = [1, 2, 3, 4]
print a

a.append(a)
print a
Run Code Online (Sandbox Code Playgroud)

我期待输出是......

[1, 2, 3, 4]
[1, 2, 3, 4, [1, 2, 3, 4]]
Run Code Online (Sandbox Code Playgroud)

但它是这样的......

[1, 2, 3, 4]
[1, 2, 3, 4, [...]]
Run Code Online (Sandbox Code Playgroud)

为什么?

the*_*eye 9

要添加aa自身.第二个要素aa.所以,如果它试图打印a,如你所愿

  • 它会打印出第一个元素 [1, 2, 3, 4]
  • 它会打印第二个元素,实际上是 a

    • 它会打印出第一个元素 [1, 2, 3, 4]
    • 它会打印第二个元素,实际上是 a

      • 它会打印出第一个元素 [1, 2, 3, 4]
      • 它会打印第二个元素,实际上a......

你看它是怎么回事吧?它将无限地完成它.因此,当存在这样的循环引用时,Python将仅表示为一对方括号内的省略号[...].

如果要按a原样插入副本,则可以使用切片创建新列表,如下所示

>>> a = [1, 2, 3, 4]
>>> a.append(a[:])
>>> a
[1, 2, 3, 4, [1, 2, 3, 4]]
Run Code Online (Sandbox Code Playgroud)