Affectation étrange de liste...

Résolu/Fermé
alexdmds Messages postés 4 Date d'inscription mardi 30 décembre 2014 Statut Membre Dernière intervention 5 mars 2015 - Modifié par alexdmds le 4/03/2015 à 23:56
alexdmds Messages postés 4 Date d'inscription mardi 30 décembre 2014 Statut Membre Dernière intervention 5 mars 2015 - 5 mars 2015 à 10:02
Bonjour,

je suis récemment tombé sur un phénomène assez étrange... Regardez par vous-même.

ordre = [0,0,0,0,0,0]
malist = [1,2,3,4,5,6]

new = malist

compte = 0
while new != [-1,-1,-1,-1,-1,-1]:
compte += 1
for i in range(0,6):
if new[i] == max(new):
ordre[i]= compte
new[i]= -1

print(malist)


La console me sort en sortie [-1,-1,-1,-1,-1,-1].

Comment "malist" a-t-elle pu changer de valeur sans avoir été affectée une seule fois ?
Cela remet en cause un des principe de base de l'algorithmie selon moi, je suis totalement perdu...
Ce symbole "=", signifierait-il plus que "prend la valeur" ?

Merci d'avance !

2 réponses

dsy73 Messages postés 9252 Date d'inscription dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 476
Modifié par dsy73 le 5/03/2015 à 05:47
Salut
je n'ai pas regardé en détail ton code mais il me semble que c'est un problème de référence : http://sametmax.com/valeurs-et-references-en-python/

La ligne en cause : new = malist
0
alexdmds Messages postés 4 Date d'inscription mardi 30 décembre 2014 Statut Membre Dernière intervention 5 mars 2015
5 mars 2015 à 10:02
Merci beaucoup dsy73, l'article correspond parfaitement à mon problème !
Je n'était pas du au courant de ses assignations et références, j'aurais appris quelque chose.
Merci encore :)
0