Liste Python ajouter
Je veux stocker les valeurs intermédiaires d'une variable en Python. Cette variable est mise à jour en boucle. Lorsque j'essaie de le faire avec un list.append
de commande, il met à jour à chaque valeur de la liste avec la nouvelle valeur de la variable. Comment dois je faire ?
while (step < maxstep):
for i in range(100):
x = a*b*c
f1 += x
f2.append(f1)
print f2
raw_input('<<')
step += 1
Sortie attendue
[array([-2.03,-4.13])]
<<
[array([-2.03,-4.13]),array([-3.14,-5.34])]
Sortie imprimée
[array([-2.03,-4.13])]
<<
[array([-3.14,-5.34]),array([-3.14,-5.34])]
Est-il un autre moyen d'obtenir ce que je veux en python?
Quel est le sens de
X est mis à jour basé sur une fonction , m est la portée de la boucle, la boucle while s'exécute pour un nombre arbitraire de mesures
Mais maintenant, je suis confus, je vois que vous avez
C'est une faute de frappe 🙂 merci
condition
et m
? Qu'est-ce que fi
? Qu'est-ce que f()
?X est mis à jour basé sur une fonction , m est la portée de la boucle, la boucle while s'exécute pour un nombre arbitraire de mesures
Mais maintenant, je suis confus, je vois que vous avez
f1
et fi
est qu'une faute de frappe dans votre code?C'est une faute de frappe 🙂 merci
OriginalL'auteur abcd | 2012-09-05
Vous devez vous connecter pour publier un commentaire.
En supposant que l'original avait une faute de frappe et
f1
est actuellementfi
(ou vice verca):fi
est un pointeur vers un objet, afin de vous garder en y ajoutant le pointeur de même, lorsque vousfi += x
vous en train de changer la valeur de l'objet auquelfi
points. J'espère que cela est clair.Pour résoudre le problème, vous pouvez
fi = fi + x
à la place.L'ajout de votre solution pour les prochaines générations
OriginalL'auteur zenpoy
Il semble que vous ajoutez le même tableau pour la liste, puis en changeant le contenu de la matrice
Vous avez besoin pour créer un nouvel objet array à chaque fois que vous l'ajouter à
f2
Vous aurez besoin d'ajouter plus d'info pour le code dans votre question si vous avez besoin de plus d'aide. Il n'a pas beaucoup de sens pour le moment (où est la valeur de
fi
changé?)OriginalL'auteur John La Rooy
Je suppose que vous vouliez dire quelque chose comme ceci:
Noter que si
f1
est un objet mutable, la lignef1 += x
ne pas créer de nouveaux objets, mais seulement des modifications de la valeur def1
, de sorte que l'ensemble de ses occurrences dansf2
tableau sont mis à jour.OriginalL'auteur Abgan
Vous devriez vraiment coller un exemple de travail.
L'objet que vous ajoutez (fi) est mutable (voir Python docs), ce qui signifie, en substance, à laquelle vous ajoutez une référence à l'objet, et non pas la valeur de l'objet. Par conséquent, les deux de la liste de l'index 0 et 1 sont en fait le même objet.
Vous devez soit créer un nouvel objet (
fi = array()
) à chaque itération de boucle ou de l'utilisation de la module de copie de.OriginalL'auteur Erik Cederstrand
Une autre question connexe est celle de "Comment puis-je passer une variable par référence?".
Daren Thomas utilisés affectation à expliquer une variable pass fonctionne en python. Pour la méthode append, on pouvait penser de la même façon. Dire que vous êtes ajout d'une liste de "list_of_values" pour la liste "list_of_variables",
L'opération de concaténation peut être pensé comme:
Parce que 1er et 2ème article dans "list_of_variables" pointent vers le même objet en mémoire, la sortie à partir de ci-dessus est:
D'autre part, si "list_of_values" est une variable, le comportement sera différent.
L'opération de concaténation est maintenant équivalent à:
Et la sortie est:
La différence entre variable et list_of_values est la plus récente de l'évolution de la place.
OriginalL'auteur Gatsby