簡體   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