我知道可以在列表中创建列表。但是有多少,我到底能不能合二为一。我在 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/

10-12 19:25