当你想在Python中清除一个列表时,有什么理由去做比这两行更复杂的事情吗?
old_list = []
old_list = list()
我问这个问题的原因是我刚刚在一些正在运行的代码中看到了这个:
del old_list[ 0:len(old_list) ]
当你想在Python中清除一个列表时,有什么理由去做比这两行更复杂的事情吗?
old_list = []
old_list = list()
我问这个问题的原因是我刚刚在一些正在运行的代码中看到了这个:
del old_list[ 0:len(old_list) ]
当前回答
del list[:]
是否会删除该列表变量的值
del list
将从内存中删除变量本身
其他回答
del list[:]
是否会删除该列表变量的值
del list
将从内存中删除变量本身
有一个非常简单的方法来清除python列表。使用del list_name[:]。
例如:
>>> a = [1, 2, 3]
>>> b = a
>>> del a[:]
>>> print a, b
[] []
在以下两种情况下,您可能需要清除列表:
你想在你的代码中进一步使用名称old_list; 你希望旧的列表尽快被垃圾收集,以释放一些内存;
在情况1中,你只要继续做作业
old_list = [] # or whatever you want it to be equal to
在情况2中,del语句将减少old list所指向的list对象的引用计数。如果列表对象仅由名称old_list at指向,则引用计数将为0,并且该对象将被释放用于垃圾收集。
del old_list
另一个工作良好的解决方案是创建一个空列表作为引用空列表。
empt_list = []
例如,您有一个a_list =[1,2,3]的列表。要清除它,只需执行以下命令:
a_list = list(empt_list)
这将使a_list成为一个空列表,就像empt_list一样。
执行alist =[]并不清除列表,只是创建一个空列表并将其绑定到变量list。如果旧的列表有其他变量绑定,那么它将仍然存在。
要真正清除列表,你可以使用以下任何一种方法:
最清楚()Python 3.3+,最清楚 del alist [:] alist[:] = [] alist * 0更快
更多细节请参见可变序列类型文档页。