Bonjour,
je suis récemment tombé sur un problème dont la résolution m'a laissé perplexe.
Considérons la séquence ci-dessous qui résumé le problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 a=1 b=[] b.append(a) b[-1]=2 print a, b c=[1,2,3,4] d=[] d.append(c) d[-1][1]=10 print c, d
L'exécution donne :
1 [2]
[1, 10, 3, 4] [[1, 10, 3, 4]]
La première séquence produit le résultat attendu : "b" est modifié, "a"a garde sa valeur initiale "1". "b[-1]" opère sur la valeur et non sur "a".
Par contre dans la seconde séquence, la modification de "b" modifie aussi "c". Ici on n'opère pas sur la valeur de "d", mais sur celle de "c" qui a servi à initialiser "c".
Ceci est-il cohérent ?
Je suis sous Ubuntu avec python 2.
Cordialement
Partager