以下代码在 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在这里试图做什么?
以下代码在 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在这里试图做什么?
您已经在列表中创建了一个无限嵌套列表。由于无法表示,[...]
出现。
看看如果您尝试打印每个值会发生什么:
>>> for item in a:
... print item
...
1
2
3
[1, 2, 3, [...]] # The whole list that we just iterated over :)
请参阅此处以进一步阅读。
你基本上是在制作一个嵌套列表的列表(列表中的列表),并且你正在将一个列表附加到自身创建一个无限嵌套的列表
例如:
>>> 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]
[...]
更多信息和示例在此处解释这些无限嵌套列表
列表被分配为指向原始列表的指针。如果你真的想要一个作为元素 3 附加的列表,你可以制作这样的副本:
>>> a.append(a[:])
>>> print a
[1, 2, 3, [1, 2, 3]]
或者,如果您想要 的元素a
,请改用:
>>> a = a + a
>>> print a
[1, 2, 3, 1, 2, 3]