Tableaux 2D et Matrices
1. Introduction
Un tableau 2D (ou matrice) est une structure de données qui permet de représenter des données disposées en lignes et colonnes. C’est très utile pour modéliser :
- Des grilles de jeux (comme le morpion),
- Des images simples en noir et blanc (pixels 0 ou 1),
- Des données numériques organisées sur deux dimensions (tableaux, matrices),
- Des cartes ou plans.
En Python, on représente un tableau 2D par une liste de listes.
2. Déclaration et initialisation
Pour créer un tableau 2D avec 3 lignes et 3 colonnes initialisées à 0, la bonne méthode est la suivante :
tab = [[0] * 3 for _ in range(3)]Pourquoi cette méthode ?
- Le
for _ in range(3)permet de créer une nouvelle liste distincte pour chaque ligne.
- Chaque ligne est une liste
[0, 0, 0].
- Résultat :
tabest une liste contenant 3 listes indépendantes.
Erreur fréquente à éviter
On pourrait penser faire :
tab = [[0]*3]*3Mais cela crée trois références vers la même liste. Donc, modifier un élément dans une ligne modifie aussi les autres lignes ! Ce n’est pas ce que l’on veut.
Exemple de problème :
tab = [[0]*3]*3
tab[0][0] = 1
print(tab)Affichera :
[[1, 0, 0],
[1, 0, 0],
[1, 0, 0]]Ici, la modification s’est propagée partout car toutes les lignes pointent vers la même liste.
3. Accès aux éléments
Chaque élément s’accède avec deux indices : tab[i][j], où :
iest l’indice de la ligne (0, 1, 2 pour un tableau 3x3),
jest l’indice de la colonne (0, 1, 2).
Exemple :
tab[1][2] = 5 # modifie l'élément à la ligne 1, colonne 24. Parcours d’un tableau 2D
Pour traiter ou afficher tous les éléments, on utilise une double boucle imbriquée :
for i in range(len(tab)): # parcours des lignes
for j in range(len(tab[0])): # parcours des colonnes
print(tab[i][j], end=' ')
print() # saut de ligne après chaque ligneCette double boucle permet de parcourir toutes les cases de la matrice, ligne par ligne.
5. Modifications et manipulations
Exemple : incrémenter toutes les cases
for i in range(len(tab)):
for j in range(len(tab[0])):
tab[i][j] += 1Exemple : remplir une diagonale
n = len(tab)
for i in range(n):
tab[i][i] = 16. Applications types
- Morpion : une grille 3x3 où chaque case peut être vide (
0), ou occupée par un joueur (1ou2).
- Image en noir et blanc : matrice où chaque valeur est 0 (noir) ou 1 (blanc).
- Tableaux de données : représentation d’informations organisées en lignes et colonnes.
7. Autres conseils importants
- Toujours bien initialiser les tableaux 2D pour éviter des références partagées non voulues.
- Pour accéder au nombre de lignes, utiliser
len(tab).
- Pour accéder au nombre de colonnes, utiliser
len(tab[0])(on suppose une matrice régulière).
- Les indices commencent toujours à 0.
- En Python, contrairement à certains langages, on ne déclare pas la taille d’un tableau à l’avance, mais on peut la fixer en initialisant.
8. Exemple complet : création et affichage
# Création d'une matrice 3x3 remplie de 0
tab = [[0]*3 for _ in range(3)]
# Modification d'un élément
tab[0][1] = 7
# Affichage
for i in range(len(tab)):
for j in range(len(tab[0])):
print(tab[i][j], end=' ')
print()Affiche :
0 7 0
0 0 0
0 0 09. En résumé
- Un tableau 2D est une liste de listes en Python.
- Il faut créer chaque ligne comme une liste indépendante.
- On accède aux éléments avec
tab[i][j].
- On parcourt le tableau avec deux boucles imbriquées.
- C’est la structure de base pour représenter grilles, images, matrices numériques.