Problème de listes

Résolu
P -  
P_7080 Messages postés 2 Statut Membre -
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

  1. yapuka
     
    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
    1. P_7080 Messages postés 2 Statut Membre
       
      Merci beaucoup j'avais oublié cette subtilité
      0