不同的清单方式
当你想在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 。