Y a-t-il une raison de faire quelque chose de plus compliqué qu'une de ces deux lignes lorsque vous voulez effacer une liste en Python?
old_list = []
old_list = list()
La raison pour laquelle je demande, c'est que je viens de voir cela dans un code en cours d'exécution:
del old_list[ 0:len(old_list) ]
a[:x]
signifie commencer à x eta[x:]
signifie x à terminer.a[ 0:len(a) ]
peut s'écrirea[:]
. Vous pouvez également utiliser des négatifs pour compter à partir de la fin (a[-1]
est le dernier élément).Réponses:
La suppression d'une liste en place affectera toutes les autres références de la même liste.
Par exemple, cette méthode n'affecte pas les autres références:
Mais celui-ci fait:
Vous pourriez également faire:
la source
del a[:]
a
? J'ai penséa
et faitb
référence au même objet ... Je veux juste savoir pourquoi. Merci.a.clear()
, pas de problème!Faire
alist = []
ne supprime pas la liste, crée simplement une liste vide et la lie à la variablealist
. L'ancienne liste existera toujours si elle avait d'autres liaisons de variables.Pour effacer une liste sur place , vous pouvez utiliser l'une des méthodes suivantes:
alist.clear() # Python 3.3+, most obvious
del alist[:]
alist[:] = []
alist *= 0 # fastest
Voir la page de documentation sur les types de séquences mutables pour plus de détails.
la source
Il existe un moyen très simple d'effacer une liste python. Utilisez del list_name [:] .
Par exemple:
la source
Il me semble que del vous rendra la mémoire, tandis que l'attribution d'une nouvelle liste ne supprimera l'ancienne que lorsque le gc fonctionnera.Cela peut être utile pour les grandes listes, mais pour les petites listes, il doit être négligeable.
Edit : En tant qu'Algorias, cela n'a pas d'importance.
Notez que
est équivalent à
la source
Supprime les valeurs de cette variable de liste
Supprime la variable elle-même de la mémoire
la source
Il existe deux cas dans lesquels vous souhaiterez peut-être effacer une liste:
old_list
plus loin dans votre code;Dans le cas 1, vous continuez avec l'assignation:
Dans le cas 2, l'
del
instruction réduirait le nombre de références à l'objet de liste vers lequel le nomold list
pointe. Si l'objet de liste n'est pointé que par le nomold_list
de, le nombre de références serait 0 et l'objet serait libéré pour la récupération de place.la source
Si vous effacez la liste, vous n'avez évidemment plus besoin de la liste. Si c'est le cas, vous pouvez simplement supprimer la liste entière par simple méthode del.
Mais au cas où vous en auriez besoin à nouveau, vous pouvez le réinitialiser. Ou tout simplement effacer ses éléments en
la source
une autre solution qui fonctionne bien est de créer une liste vide en tant que liste vide de référence.
par exemple, vous avez une liste en tant que
a_list = [1,2,3]
. Pour l'effacer, procédez comme suit:cela fera
a_list
une liste vide comme leempt_list
.la source