0

以下代码在 Python 2.7.1 解释器中进行了尝试。

>>> a = [1, 2, 3]
>>> a.append(a)
>>> a
[1, 2, 3, [...]]
>>> a == a[-1]
True
>>> print a[-1]
[1, 2, 3, [...]]

谁能解释一下python在这里试图做什么?

4

3 回答 3

3

您已经在列表中创建了一个无限嵌套列表。由于无法表示,[...]出现。

看看如果您尝试打印每个值会发生什么:

>>> for item in a:
...     print item
... 
1
2
3
[1, 2, 3, [...]] # The whole list that we just iterated over :)

请参阅此处以进一步阅读。

于 2013-08-26T06:51:38.107 回答
2

你基本上是在制作一个嵌套列表的列表(列表中的列表),并且你正在将一个列表附加到自身创建一个无限嵌套的列表

例如:

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

>>> a[3]
[1, 2, 3, [...]]
>>> a[3][3]
[1, 2, 3, [...]]
>>> 

当您a[3]在嵌套列表中显示下一个列表时,当我在其中a[3][3]获取列表时, python 是如何描绘这个想法的a[3][...]

更多信息和示例在此处解释这些无限嵌套列表

于 2013-08-26T07:02:46.897 回答
0

列表被分配为指向原始列表的指针。如果你真的想要一个作为元素 3 附加的列表,你可以制作这样的副本:

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

或者,如果您想要 的元素a,请改用:

>>> a = a + a
>>> print a
[1, 2, 3, 1, 2, 3]
于 2013-08-26T06:57:28.210 回答