栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 面试经验 > 面试问答

删除列表中的所有对象

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

删除列表中的所有对象

tl; dr;

mylist.clear()  # Added in Python 3.3del mylist[:]

可能是做到这一点的最佳方法。该答案的其余部分试图解释为什么您的其他一些努力不起作用。


cpython至少在引用计数上起作用,以确定何时删除对象。在这里,您对同一对象有多个引用。

a
引用相同的对象
c[0]
。当您在
c
for iin c:
)上循环时,有时
i
还会引用同一对象。该
del
关键字删除了一个引用,因此:

for i in c:   del i

在其中创建对对象的引用

c
,然后删除该引用-但该对象仍具有其他引用(
c
例如,其中存储了一个引用),因此它将持久存在。

以相同的方式:

def kill(self):    del self

仅删除该方法中对对象的引用。从列表中删除所有引用的一种方法是使用切片分配:

mylist = list(range(10000))mylist[:] = []print(mylist)

显然,您也可以删除切片以删除适当的对象:

del mylist[:]  #This will implicitly call the `__delslice__` or `__delitem__` method.

这将从中删除所有引用

mylist
,也从所有引用到的引用中删除引用
mylist
。与简单删除列表相比-例如

mylist = list(range(10000))b = mylistdel mylist#here we didn't get all the references to the objects we created ...print(b) #[0, 1, 2, 3, 4, ...]

最后,最近的python修订版添加了一种

clear
方法,该方法的作用与该方法相同
del mylist[:]

mylist = [1, 2, 3]mylist.clear()print(mylist)


转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/640224.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号