在Python中,清空列表的最快方法是什么

在Python中,清空列表的最快方法是什么,python,Python,在Python中,清空列表的最快方法是什么? clear()是最快的吗? 还有,什么是最节省内存的方法? 我听说重新初始化列表不会清除它,但是让GarbageCleaner根据剩余的引用删除实际内容 哪种方式最快,并且如果可能的话,内存效率最高?ls.clear()、dells[:]和ls[:]=[]在性能上都是相同的: $ python3 -m timeit -n 1000 "ls=list(range(10000)); ls.clear()" 1000 loops, best of 5: 2

在Python中,清空列表的最快方法是什么?
clear()
是最快的吗? 还有,什么是最节省内存的方法? 我听说重新初始化列表不会清除它,但是让GarbageCleaner根据剩余的引用删除实际内容

哪种方式最快,并且如果可能的话,内存效率最高?

ls.clear()
dells[:]
ls[:]=[]
在性能上都是相同的:

$ python3 -m timeit -n 1000 "ls=list(range(10000)); ls.clear()"
1000 loops, best of 5: 219 usec per loop

$ python3 -m timeit -n 1000 "ls=list(range(10000)); del ls[:]"
1000 loops, best of 5: 215 usec per loop

$ python3 -m timeit -n 1000 "ls=list(range(10000)); ls[:]=[]"
1000 loops, best of 5: 218 usec per loop
我同意其他人的看法,如果你甚至需要考虑这些类型的微观优化,你使用的语言是错误的


我总是使用
ls.clear()
,因为这是我最明显、最可读、最干净的方式。

,清除列表不会成为你的瓶颈。如果这种mico优化对你的代码很重要,那么python对你来说不是合适的语言。但是,这个问题仍然是有效的——它不是太广泛或不清楚(我没有dv)@Chris_Rands-我想说它太宽了,你不知道列表包含什么(它们是对象。空是什么意思?如果存在对象的其他引用会发生什么?我投了反对票,因为没有显示任何研究成果。