不同的清单方式
当你想在Python中清除一个列表时,是否有理由做比这两行更复杂的任何事情?
old_list = [] old_list = list()
我问的原因是我刚刚在一些运行代码中看到了这个:
del old_list[ 0:len(old_list) ]
清理清单将影响同一清单的所有其他参考。
例如,此方法不会影响其他引用:
>>> 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[:] = []
有一个非常简单的方法来删除一个Python列表。 使用del list_name [:] 。
例如:
>>> a = [1, 2, 3]` >>> b = a >>> del a[:] >>> print a, b [] []
在我看来,德尔会给你回忆,而分配一个新的列表将使旧的删除只有当gc runs.matter。
这对于大型列表可能是有用的,但是对于小型列表应该是可以忽略的。
编辑 :作为Algorias,这并不重要。
注意
del old_list[ 0:len(old_list) ]
相当于
del old_list[:]
有两种情况可能需要清除列表:
- 你想在代码中进一步使用名字
old_list
; - 您希望尽快清理垃圾清单,以释放一些内存;
在第一种情况下,你只是继续分配:
old_list = [] # or whatever you want it to be equal to
在情况2中del
语句将减less列表对象的引用计数, old list
指向。 如果列表对象仅由名称old_list
at指向,则引用计数将为0,并且该对象将被释放以进行垃圾回收。
del old_list
del list[:]
将删除该列表variables的值
del list
将从内存中删除variables本身
要在Python 3.3+中就地清除列表,还可以使用list.clear()
,该列表与其他可变容器(例如dict
, set
或deque
)的接口一致。
old_list.clear() # removes all items from old_list (same as del old_list[:])
如果你正在清单,你显然不需要这个清单了。 如果是这样,你可以通过简单的del方法删除整个列表。
a = [1, 3, 5, 6] del a # This will entirely delete a(the list).
但是,如果你再次需要它,你可以重新初始化它。 或者只是简单地清除它的元素
del a[:]
另一个可以正常工作的解决scheme是创build空列表作为参考空列表。
empt_list = []
例如你有一个列表为a_list = [1,2,3]
。 要清除它只需做到以下几点:
a_list = list(empt_list)
这将使a_list
成为一个空列表,就像empt_list
。