Python 3方法
如果这个函数是O(n),那么我会每次创建一个新的列表,虽然这有一定的成本,但我不知道更好的方法。
另一个问题是Python有垃圾收集器,所以如果我不释放这些对象(每次创建新的列表,通过重新分配变量名来忽略旧列表),Python会在后台进行删除(我对此信息不确定),因此我不会因为应用上述任何方法而获得速度提升,因为结果是相同的。
非常感谢您的帮助。
list.clear()
的复杂度是什么?
It is not given here: https://wiki.python.org/moin/TimeComplexity
In the documentation it is said to be equivalent with
del a[:]
, but I do not know the complexity of this function itself. Is itO(n)
orO(1)
?I took a look in
listobject.c
. Found this.int PyList_ClearFreeList(void) { PyListObject *op; int ret = numfree; while (numfree) { op = free_list[--numfree]; assert(PyList_CheckExact(op)); PyObject_GC_Del(op); } return ret; }
Here it seems like
O(n)
, but I am not sure if this is the right code.
如果这个函数是O(n),那么我会每次创建一个新的列表,虽然这有一定的成本,但我不知道更好的方法。
另一个问题是Python有垃圾收集器,所以如果我不释放这些对象(每次创建新的列表,通过重新分配变量名来忽略旧列表),Python会在后台进行删除(我对此信息不确定),因此我不会因为应用上述任何方法而获得速度提升,因为结果是相同的。
非常感谢您的帮助。