[英]Why do i get different object ID's when appending same object to different list in python OOP?
[英]Why do I get […] when I append a list to the same list in 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]
即时得到内部列表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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.