Menu

Problème de listes [Résolu]

- - Dernière réponse : 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
Afficher la suite 

Votre réponse

1 réponse

0
Merci
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.
P_7080
Messages postés
2
Date d'inscription
jeudi 21 février 2019
Statut
Membre
Dernière intervention
25 avril 2019
-
Merci beaucoup j'avais oublié cette subtilité
Commenter la réponse de yapuka