为什么在打印时会自动附加一个列表?

时间:2015-03-21 12:42:43

标签: python list python-2.7 python-3.x

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

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

a.append(a)
print a

我期待输出为......

[1, 2, 3, 4]
[1, 2, 3, 4, [1, 2, 3, 4]]

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

[1, 2, 3, 4]
[1, 2, 3, 4, [...]]

WHY吗

2 个答案:

答案 0 :(得分:9)

您要将a添加到a本身。 a的第二个元素仅为a。因此,如果它试图打印a,就像你想要的那样

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

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

      • 会打印第一个元素[1, 2, 3, 4]
      • 它会打印第二个元素,实际上是a ...
你知道它是怎么回事吗?它将无限地完成它。因此,当存在这样的循环引用时,Python将仅将其表示为一对方括号[...]中的省略号。

如果您要原样插入a的副本,则可以使用slicing创建新列表,例如

>>> a = [1, 2, 3, 4]
>>> a.append(a[:])
>>> a
[1, 2, 3, 4, [1, 2, 3, 4]]

答案 1 :(得分:0)

您也可以使用for循环添加它们,但最终会有一个大的列表。

a = [1, 2, 3, 4]

lengthOfA = len(a)

for x in range(0, lengthOfA):
    item = a[x]
    a.append(item)

print a #Answer is [1, 2, 3, 4, 1, 2, 3, 4]

我喜欢这个答案,因为它会创建一个嵌套列表,但如果这不是你想要的,请放弃这个答案。

如果你想要列表中的列表,你可以使用thefourtheye的awnser。

a = [1, 2, 3, 4]

a.append(a[:])

print a #Answer is [1, 2, 3, 4 [1, 2, 3, 4]]