2008-10-03 7 views
7

Je trouve ça agaçant que je ne puisse pas effacer une liste. Dans cet exemple:Effacer une liste

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

a = [] 

La deuxième fois que j'initialiser une à une liste blanche, il crée une nouvelle instance d'une liste, qui est dans un endroit différent dans la mémoire, donc je ne peux pas l'utiliser pour faire référence à la D'abord, sans parler de son inefficacité.

La seule façon que je peux voir de conserver le même pointeur est en train de faire quelque chose comme ce qui suit:

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

Cela semble assez poussif longtemps cependant, est-il une meilleure façon de résoudre ce?

+0

S'il vous plaît développer sur "qui est dans un endroit différent en mémoire, donc je ne peux pas l'utiliser pour référencer le premier" Cela a très peu de sens dans un contexte Python. Peut-être en C++, mais pas en Python. –

+0

Je soulignais simplement que si j'ai une référence à cet objet à partir d'un autre objet, le 'nouveau' a est maintenant différent du premier, donc je ne peux pas utiliser cette même référence pour modifier le nouveau a. Python a toujours le concept des pointeurs et de la gestion de la mémoire, il le cache juste de vous. – Dan

+0

"le 'nouveau' a est maintenant différent du premier" Tout à fait vrai, je ne peux pas voir une situation où cela compte. Un exemple de code plus complet pourrait aider à expliquer où cela aurait réellement de l'importance. –

Répondre

26

Vous recherchez:

del L[:] 
+2

De même, vous pouvez également faire L [:] = [] – Moe

3

Je ne sais pas pourquoi vous êtes inquiet au sujet du fait que vous faites référence à une nouvelle liste vide dans la mémoire au lieu de la même « pointeur ».

Votre autre liste sera collectée tôt ou tard et l'un des gros avantages de travailler dans un langage de haut niveau, c'est que vous n'avez normalement pas à vous soucier de choses comme ça.

+1

Il peut contenir une référence à la liste dans une autre partie du programme qui aurait besoin de savoir que la liste est vide. –

+0

Peut-être, mais ce n'est pas ce qu'il a demandé. Il était plutôt préoccupé par la perte d'un pointeur vers cet endroit en mémoire, ce qui est un concept douteux en Python. – Dana

+0

Il l'a clarifié plus tard dans un commentaire. – tzot

Questions connexes