J'ai un problème étrange avec une tâche que j'ai. Nous sommes supposés implémenter une classe matricielle. Eh bien, ce n'est pas si difficile, mais Python ne fera tout simplement pas ce que je lui dis. Mais je suis sûr qu'il y a une explication.Liste/matrice ne sauvegarde pas les valeurs correctes
Le problème est que, dans le code suivant, j'essaie d'enregistrer des valeurs (fournies dans une liste) dans une matrice.
class simplematrix:
matrix = [[]]
def __init__(self, * args):
lm = args[0]
ln = args[1]
values = args[2]
self.matrix = [[0]*ln]*lm
for m in range(lm):
for n in range(ln):
self.matrix[m][n] = values[(m*ln)+n]
vals = [0,1,2,3,4,5]
a = simplematrix(2,3,vals)
Lorsque je tente d'imprimer la matrice, je vous attendre à obtenir [[0,1,2], [3,4,5]], que je reçois si je le lance à la main, sur un morceau de papier. Si j'imprime la matrice à partir de Python, j'obtiens [[3,4,5], [3,4,5]] à la place. Quelqu'un peut-il me dire pourquoi Python agit comme ça, ou si j'ai fait une erreur stupide quelque part? :)
Ah d'accord. Merci beaucoup pour la réponse rapide et l'explication. Je ne vois pas l'utilisation de faire des références à la même liste plusieurs fois, donc je n'aurais jamais compris moi-même :) Encore une fois - merci. – Casper
Vous êtes les bienvenus. Tout le monde se fait prendre par là à un moment donné. – NPE