¿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 algún código en ejecución:
del old_list[ 0:len(old_list) ]
a[:x]
significa comenzar a xya[x:]
significa x al final.a[ 0:len(a) ]
se puede escribir comoa[:]
. También puede usar negativos para contar desde el final (a[-1]
es el último elemento).Respuestas:
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:
Pero este sí:
También puedes hacer:
fuente
del a[:]
a
? Penséa
y hiceb
referencia al mismo objeto ... Solo quiero saber por qué. Gracias.a.clear()
, ¡no hay problema!Hacer
alist = []
no borra la lista, solo crea una lista vacía y la vincula a la variablealist
. La lista anterior seguirá existiendo si tuviera otros enlaces variables.Para borrar una lista en el lugar , puede usar cualquiera de estas formas:
alist.clear() # Python 3.3+, most obvious
del alist[:]
alist[:] = []
alist *= 0 # fastest
Consulte la página de documentación de Tipos de secuencia mutable para obtener más detalles.
fuente
Hay una manera muy simple de borrar una lista de Python. Use del list_name [:] .
Por ejemplo:
fuente
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 se ejecute gc.matter.Esto puede ser útil para listas grandes, pero para listas pequeñas debería ser insignificante.
Editar : como Algorias, no importa.
Tenga en cuenta que
es equivalente a
fuente
Eliminará los valores de esa variable de lista
Eliminará la variable de la memoria
fuente
Hay dos casos en los que es posible que desee borrar una lista:
old_list
más adelante en su código;En el caso 1, simplemente continúe con la tarea:
En el caso 2, la
del
declaración reduciría el recuento de referencias al objeto de lista al queold list
apunta el nombre . Si el nombre de la lista solo apuntaold_list
al objeto, el recuento de referencia sería 0 y el objeto se liberaría para la recolección de elementos no utilizados.fuente
Si está limpiando la lista, obviamente, ya no la necesita. Si es así, puede eliminar toda la lista con el método simple del.
Pero en caso de que lo necesite nuevamente, puede reiniciarlo. O simplemente borrar sus elementos por
fuente
Otra solución que funciona bien es crear una lista vacía como una lista vacía de referencia.
por ejemplo tienes una lista como
a_list = [1,2,3]
. Para borrarlo solo haga lo siguiente:esto hará
a_list
una lista vacía al igual queempt_list
.fuente