2008-10-03 9 views
7

Me resulta molesto que no puedo borrar una lista. En este ejemplo:Borrar una lista

a = [] 
a.append(1) 
a.append(2) 

a = [] 

La segunda vez que inicializar una a una lista en blanco, se crea una nueva instancia de una lista, que está en un lugar diferente en la memoria, por lo que no se puede utilizar para hacer referencia a la primero, sin mencionar que es ineficiente.

La única forma que veo de retener el mismo puntero está haciendo algo como lo siguiente:

for i in range(len(a)): 
    a.pop() 

Esto parece bastante largo aliento sin embargo, hay una mejor manera de resolver esto?

+0

Amplíe "que está en un lugar diferente en la memoria, por lo que no puedo usarlo para hacer referencia al primero" Esto tiene muy poco sentido en un contexto de Python. Quizás en C++, pero no en Python. –

+0

Simplemente estaba señalando que si tengo una referencia a este objeto desde otro objeto, la 'nueva' a es ahora una diferente a la primera, por lo que no puedo usar esta misma referencia para modificar la nueva a. Python todavía tiene el concepto de punteros y administración de memoria, simplemente lo oculta. – Dan

+0

"la 'nueva' a es ahora una diferente a la primera" Si bien es absolutamente cierto, no puedo ver una situación en la que esto importe. Un ejemplo de código más completo podría ayudar a explicar dónde esto realmente importaría. –

Respuesta

26

Usted ha buscado:

del L[:] 
+2

Del mismo modo, también puede hacer L [:] = [] – Moe

3

No estoy seguro de por qué estás preocupado por el hecho de que se está haciendo referencia a una nueva lista vacía en la memoria en lugar de la misma "puntero".

Su otra lista se recogerá tarde o temprano y una de las grandes ventajas de trabajar en un lenguaje de alto nivel, recogido de basura es que normalmente no necesita preocuparse por cosas como esta.

+1

Puede estar manteniendo una referencia a la lista en otra parte del programa que necesitaría saber que la lista está vacía. –

+0

Quizás, pero eso no fue lo que preguntó. En cambio, estaba preocupado por perder un puntero a esa ubicación particular en la memoria, que de todos modos es un concepto dudoso en Python. – Dana

+0

Más tarde lo aclaró en un comentario. – tzot