Bonjour
j'ai quelques soucis avec la copie de tableaux.
Je veux créer un tableau 10*2, puis changer toutes les valeurs de la 2eme entrée de chaque item
Par exemple changer le tableau [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
en [[0,2],[0,2]......]
J'ai d'abord fait ça :
Mais ça ajoute 2 dix fois à chaque deuxième composante, j'obtiens à la fin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 tableau = [[0,0]]*10 print(tableau) for item in tableau: item[1] +=2 print (tableau)
[[0, 20], [0, 20], [0, 20], [0, 20], [0, 20], [0, 20], [0, 20], [0, 20], [0, 20], [0, 20]]
J'ai essayé de copier le tableau dans un autre avec l'instruction tab2 =list(tableau), le test me dit bien que les 2 tableaux sont différents,
mais agir sur le 2eme agit aussi sur le premier, je ne comprends pas pourquoi (de toute façon ça ne règle pas le problème initial non plus, mais j'aime non plus ne pas comprendre)
False
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 tableau = [[0,0]]*10 tab2=list(tableau) print(id(tableau)==id(tab2)) print(tableau) for item in tab2: item[1] +=2 print (tableau)
[[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
[[0, 20], [0, 20], [0, 20], [0, 20], [0, 20], [0, 20], [0, 20], [0, 20], [0, 20], [0, 20]]
J'ai la même chose en faisant
for i in range(len(tab2)):
tab2[i][1]+=2
Partager