2015-10-22 2 views
1

J'ai créé une fonction qui crée une liste vide et affecte une valeur d'une autre liste à une variable. Ensuite, le code est supposé ajouter la valeur de la variable à la liste chaque fois que la fonction est appelée. Mais la fonction ne s'ajoute pas, mais remplace à la place l'élément dans la liste. Je peux le dire parce que quand j'imprime la liste, l'élément précédent est manquant. Le code est ci-dessous. J'ai besoin de cela pour un examen simulé. Des idées?list.append (variable) ne pas ajouter mais remplace la liste

def track(): 
    global tracker 
    global trackerresult 
    trackerresult = [] 
    tracker = opposite1[decider] 
    trackerresult.append(tracker) 
    print(trackerresult) 
+1

Mettez 'trackerresult = []' en dehors de la fonction et cela devrait fonctionner. Peut-être repenser si vous avez besoin ou non de variables globales –

+0

Merci pour ça! –

Répondre

5

Ce n'est pas l'ajout qui fait cela, mais votre remplacement explicite de la variable existante deux lignes plus tôt. Comme le souligne CactusWoman, vous n'avez absolument pas besoin de globals ici. tracker est une variable purement locale; et comme pour trackerresult, une fois que vous vous êtes débarrassé de l'affectation, vous ne serez que en le mutant, il n'est donc pas nécessaire de le déclarer comme global.

+0

"a tendance à"? Vous avez vraiment besoin de mieux comprendre ce que fait votre code. Ajouter 'global' de manière aléatoire pourrait corriger une chose, mais probablement causer d'autres problèmes qui sont plus difficiles à trouver. Dans ce cas, il semble que vous ayez besoin d'un cours. –

+0

Cela a du sens. Je n'y ai pas pensé. Merci beaucoup! –

0

Chaque fois que vous exécutez la fonction track, elle réinitialise la valeur trackerresult à la liste vide. Si vous n'avez pas explicitement vider la liste, faites trackerresult=[] une fois avant la définition de la fonction, cela fonctionnera.