当你想在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) ]
当前回答
有一个非常简单的方法来清除python列表。使用del list_name[:]。
例如:
>>> a = [1, 2, 3]
>>> b = a
>>> del a[:]
>>> print a, b
[] []
其他回答
清除一个列表将影响同一列表的所有其他引用。
例如,这个方法不会影响其他引用:
>>> a = [1, 2, 3]
>>> b = a
>>> a = []
>>> print(a)
[]
>>> print(b)
[1, 2, 3]
但这一个有:
>>> a = [1, 2, 3]
>>> b = a
>>> del a[:] # equivalent to del a[0:len(a)]
>>> print(a)
[]
>>> print(b)
[]
>>> a is b
True
你还可以:
>>> a[:] = []
在我看来,del会把内存还给你,而分配一个新的列表将使旧的列表只在gc运行.matter时被删除。
这对于大型列表可能很有用,但对于小型列表则可以忽略不计。
编辑:作为算法,这并不重要。
请注意,
del old_list[ 0:len(old_list) ]
等于
del old_list[:]
如果你要清空列表,显然你就不再需要这个列表了。如果是这样,您可以通过简单的del方法删除整个列表。
a = [1, 3, 5, 6]
del a # This will entirely delete a(the list).
但如果你再次需要它,你可以重新初始化它。或者只是简单地清除它的元素
del a[:]
执行alist =[]并不清除列表,只是创建一个空列表并将其绑定到变量list。如果旧的列表有其他变量绑定,那么它将仍然存在。
要真正清除列表,你可以使用以下任何一种方法:
最清楚()Python 3.3+,最清楚 del alist [:] alist[:] = [] alist * 0更快
更多细节请参见可变序列类型文档页。
del list[:]
是否会删除该列表变量的值
del list
将从内存中删除变量本身