Diferentes formas de borrar listas.

¿Hay alguna razón para hacer algo más complicado que una de estas dos líneas cuando desea borrar una lista en Python?

old_list = [] old_list = list() 

La razón por la que pregunto es que acabo de ver esto en un código de ejecución:

 del old_list[ 0:len(old_list) ] 

Borrar una lista en su lugar afectará a todas las demás referencias de la misma lista.

Por ejemplo, este método no afecta a otras referencias:

 >>> a = [1, 2, 3] >>> b = a >>> a = [] >>> print(a) [] >>> print(b) [1, 2, 3] 

Pero este hace:

 >>> a = [1, 2, 3] >>> b = a >>> del a[:] # equivalent to del a[0:len(a)] >>> print(a) [] >>> print(b) [] >>> a is b True 

También podrías hacer:

 >>> a[:] = [] 

Hay una forma muy simple de borrar una lista de python. Use del list_name [:] .

Por ejemplo:

 >>> a = [1, 2, 3] >>> b = a >>> del a[:] >>> print a, b [] [] 

Me parece que del le devolverá la memoria, mientras que la asignación de una nueva lista hará que la anterior se elimine solo cuando el gc se ejecute.

Esto puede ser útil para listas grandes, pero para listas pequeñas debe ser insignificante.

Edición : Como Algorias, no importa.

Tenga en cuenta que

 del old_list[ 0:len(old_list) ] 

es equivalente a

 del old_list[:] 

Para borrar una lista en el lugar en Python 3.3+, también puede usar list.clear() , que es consistente con las interfaces de otros contenedores mutables (como dict , set o deque ).

 old_list.clear() # removes all items from old_list (same as del old_list[:]) 

Hay dos casos en los que es posible que desee borrar una lista:

  1. Desea utilizar el nombre old_list más adelante en su código;
  2. Desea que la lista anterior se recoja lo antes posible para liberar algo de memoria;

En el caso 1, simplemente continúe con la tarea:

  old_list = [] # or whatever you want it to be equal to 

En el caso 2, la instrucción del dele reduciría el recuento de referencia al objeto de old list apunta el nombre de old list . Si el nombre de la lista solo está señalado por el nombre old_list en, el recuento de referencia sería 0, y el objeto se liberaría para la recolección de basura.

  del old_list 
 del list[:] 

Se eliminarán los valores de esa lista de variables.

 del list 

Se eliminará la propia variable de la memoria.

Si está borrando la lista, usted, obviamente, ya no la necesita. Si es así, simplemente puede eliminar la lista completa con un simple método del.

 a = [1, 3, 5, 6] del a # This will entirely delete a(the list). 

Pero en caso de que lo necesites de nuevo, puedes reinicializarlo. O simplemente borrar sus elementos por

 del a[:] 

Otra solución que funciona bien es crear una lista vacía como una lista vacía de referencia.

 empt_list = [] 

por ejemplo, tiene una lista como a_list = [1,2,3] . Para borrarlo simplemente haga lo siguiente:

 a_list = list(empt_list) 

esto hará que a_list una lista vacía al igual que empt_list .