这是一个无限维度列表

时间:2014-12-15 00:11:13

标签: python list infinity

this代码是否会创建一个无限深的列表?

foo = ['Hello']
bar = [foo]*100
foo[0] = bar
print foo
print foo[0] == foo
print foo == bar

因为这就是它的样子,但是如何不占用无限量的内存呢,一切都在顺利进行。是否因为指针占用更少的内存?另外,如果我要到底,我会找到什么价值?原始'Hello'在计算机的记忆中去了哪里?

注意:
由于最后一个问题,这不是重复的。

1 个答案:

答案 0 :(得分:4)

不,它会创建两个列表:一个包含单个项目,另一个包含100个项目,这些项目都指向第一个列表。然后它使第一个列表中的单个项指向第二个列表。

所以它没有列出无限深刻的列表;它只是创造了一个循环。如果你创建了一个试图连续读取当前项的第一个元素然后递归的循环,它将无限地运行(或者至少,它会运行直到它达到Python的递归限制),但那是因为它只是围成一圈。

就像一个圆圈没有无限的圆周 - 它有一个有限的圆周,但这并不意味着你不能永远绕圈子去。