繁体   English   中英

如果您将列表附加到自身会发生什么?

[英]What happens if you append a list to itself?

如果我尝试将列表附加到自身会发生什么?

# Let's say empty list is created.
some_list = []
# Now, append it with self
some_list.append(some_list)
# Output shows [[...]] on iPython console.

这是什么意思? some_list成为递归列表还是什么? some_list引用计数会发生什么? 垃圾收集者如何对待这个? 什么时候这个some_list会被垃圾收集?

是的,你创建了一个循环引用; 列表对象引用自身。 这意味着引用计数增加1个额外引用。

Python垃圾收集器将处理这种情况; 如果没有别的东西引用列表对象,垃圾收集器进程负责打破该循环:

>>> import gc
>>> some_list = []
>>> gc.get_referents(some_list)
[]
>>> some_list.append(some_list)
>>> some_list[0] is some_list
True
>>> gc.get_referents(some_list)
[[[...]]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM