社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  问与答

[精华] 这个算循环引用吗?

olivetree • 10 年前 • 6535 次点击  

a=[]

b=[]

a.append(b)

b.append(a)

如果这算循环引用,那这两个列表岂不是嵌套的很深?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/620
 
6535 次点击  
文章 [ 7 ]  |  最新文章 10 年前
meamin9
Reply   •   1 楼
meamin9    10 年前

@爱情的枪 嗯,存储的是一个引用

爱情的枪
Reply   •   2 楼
爱情的枪    10 年前

@meamin9 应该是没有存储实际的数据,因此内存没占多少

meamin9
Reply   •   3 楼
meamin9    10 年前

@olivetree 显示时虽然是用省略的,但是不深。用c.append(c)来说吧,列表c中放了一个c自己的引用。print时,是一个循环显示c,结果显示出了省略号。你可以查看id(c)和id(c[0])是一样的。比方说如果一个链表有一个print_next方法,这个方法输出当前节点的下一个节点的内容,并把下个节点作为当前节点,那么对循环链表调用这个方法就会无限输出节点的内容,但这个链表占的内存还是那么多。

olivetree
Reply   •   4 楼
olivetree    10 年前

@meamin9 @爱情的枪 嵌套不深?输出的结果用省略号表示的,看来是很深的,解释器应该会把这种情况优化吧,只是不知道实现的时候用了什么优化的方式,使得内存没有占满

meamin9
Reply   •   5 楼
meamin9    10 年前

算循环引用吧。嵌套不深。a列表中放的是b的引用,b中放的是a的引用。 如<br /> c=[]<br /> c.append(c)<br /> c中只放了c自身的引用

爱情的枪
Reply   •   6 楼
爱情的枪    10 年前

@olivetree 是的额。。。

olivetree
Reply   •   7 楼
olivetree    10 年前

试了一下,确实很深。。。