Problème de listes

Résolu/Fermé
P - 21 févr. 2019 à 18:39
P_7080 Messages postés 2 Date d'inscription jeudi 21 février 2019 Statut Membre Dernière intervention 25 avril 2019 - 22 févr. 2019 à 12:25
Bonjour,

je planche sur le problème 82 du projet Euler et je rencontre un problème bête:
M = [[131,673,234,103,18],
[201,96,342,965,150],
[630,803,746,422,111],
[537,699,497,121,956],
[805,732,524,37,331]]

lignes ,colonnes ,i = len(M), len(M[0]), 0
for i in range(lignes):
m = M.copy()
for j in range(i-1,-1,-1):
m[j][0] += m[j+1][0]
for j in range(i+1,lignes):
m[j][0] += m[j-1][0]

J'ai utilisé une petite matrice comme exemple, mais j'ai découvert qu'étrangement, lorsque je change une valeur dans m, j'en change aussi une dans M, comme si j'avais fait un simple m = M,
j'ai essayé plusieures autres méthodes comme m = list(M) et m = M[:], rien n'y fait.
Je pense donc que le problème vient d'autres part mais je ne trouve pas d'où.
Merci à l'avance de votre aide et bonne soirée

1 réponse

Bonsoir,

Avec
m = M.copy()
, il y a copie de la liste principale, mais pas de ses éléments.

print(id(m), id(M))
print(id(m[0]), id(M[0])


Pour copier les éléments.

m = [lst.copy() for lst in M]


Ou encore en utilisant le module deepcopy.
0
P_7080 Messages postés 2 Date d'inscription jeudi 21 février 2019 Statut Membre Dernière intervention 25 avril 2019
22 févr. 2019 à 12:25
Merci beaucoup j'avais oublié cette subtilité
0