informatique (tronc commun des prépas scientifiques) · Chapitre 8 · Application directe du cours
Le piège de la création, vu de près
Matrices de pixels et images · niveau 1 (application)
Énoncé
Prédire le résultat d'affichage du script suivant et proposer une correction :
grille = [[0] * 3] * 2
grille[0][1] = 7
print(grille)Corrigé
Le programme affiche [[0, 7, 0], [0, 7, 0]]. L'opérateur [[0] * 3] * 2 crée une unique liste de 3 éléments et duplique sa référence dans les deux lignes de la liste englobante. Modifier le deuxième élément de la ligne 0 modifie ainsi par effet de bord le deuxième élément de la ligne 1. Pour corriger cela, il faut forcer l'allocation de listes indépendantes en mémoire en écrivant :
grille = [[0] * 3 for _ in range(2)]