我知道可以在列表中创建列表。但是有多少,我到底能不能合二为一。我在 IPython 控制台中尝试了这个:
In [1]: Alist = [1]
In [2]: Alist.append(Alist)
In [3]: Alist
Out[3]: [1, [...]]
In [4]: Alist[1]
Out[4]: [1, [...]]
In [5]: Alist[1][1]
Out[5]: [1, [...]]
In [6]: Alist[1][1][1]
Out[6]: [1, [...]]
现在我可以继续尝试访问
Alist[1][1][1][1]...[1]
,但这怎么可能?另外,我的机器怎么没有用完这个内存?如果有帮助,我会在 Ubuntu 16.04 上使用 Python2.7。
最佳答案
这里只有一个有限大小的对象:
首先创建一个包含一个元素 [1]
的列表对象,然后创建对该对象的引用,称为 Alist
。当您将 Alist
附加到“istelf”时,您实际上只是将对象的引用附加到对象本身。您现在有一个包含两个元素的列表对象:1
和对自身的引用。这里不涉及无限内存。
试试这个说服自己:
Alist = [1]
Alist.append(Alist)
Alist[1][0] = 0
Alist[0]
关于Python——罗素悖论(列表,而不是集合),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44878815/