bonjour, j'ai créer un tableau en python et j'aimerais modifier l'élément array[0][0] mais je n'y arrive pas :

Voici comment j'ai créer l'array:

def create(w,h):
    rows = []
    for j in range(w):
        rows.append(0)
    p = []
    for j in range(h):
        p.append(rows)
    return p

plate = create(7,6)

Donc logiquement, si je fais print(plate), voici le retour :


[[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]


Mais voici mon problème, si je fais plate[0][0] = 9 et que je fais un print(plate), voici le retour :

[[9, 0, 0, 0, 0, 0, 0], [9, 0, 0, 0, 0, 0, 0], [9, 0, 0, 0, 0, 0, 0], [9, 0, 0, 0, 0, 0, 0], [9, 0, 0, 0, 0, 0, 0], [9, 0, 0, 0, 0, 0, 0]]


Alors que j'aimerais ce résultat


[[9, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]


Désolé, ça fait beaucoup de text pour pas grand chose, c'est surrement une erreur toute bête mais je ne comprends pas, merci beaucoup (:
Modérateur
Bonjour,

Dans le tableau p, tous les éléments "pointent" sur le même tableau row. Du coup, si tu modifies d'un des éléments des éléments (ici à p[0][0]), tu modifies en fait row, et donc tu modifies aussi tous les autres quelque soit n, puisque tous les p[n] valent row.

Il faut mettre la boucle créant row dans la boucle créant p, et créer un nouveau row à chaque boucle :
def create(w,h):
	p = []
	for j in range(h):
		rows = []
		for i in range(w):
			rows.append(0)
		p.append(rows)
	return p

Amicalement,
Meilleure solution