我知道可以在列表中创建列表。但是我到底能装多少个。我在 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/