Aller au contenu

Les tableaux multidimensionnels

Les tableaux multidimensionnels

Créer une liste de listes

Le langage Python permet de représenter des données sur plusieurs dimensions en imbriquant des listes. Par exemple, une liste de listes peut représenter un tableau à deux dimensions, organisé en lignes et en colonnes :

matrix = [
    [10, 20, 30],
    [40, 50, 60]
]

Cette structure contient deux lignes et trois colonnes. Elle se rapproche davantage d’un tableau de tableaux C# (int[][]) que d’un tableau multidimensionnel (int[,]) : chaque ligne est une liste distincte et peut contenir un nombre différent d’éléments.

Accéder aux éléments

Nous utilisons deux indices successifs : le premier désigne la ligne et le second la colonne. Comme pour les listes simples, les indices commencent à zéro :

print(matrix[0][0])  # 10
print(matrix[1][2])  # 60

Nous pouvons modifier un élément de la même manière :

matrix[0][1] = 25

print(matrix[0])  # [10, 25, 30]

Parcourir les éléments

Deux boucles imbriquées permettent de parcourir les lignes, puis les éléments de chaque ligne :

for row in matrix:
    for value in row:
        print(value)

Pour obtenir également les indices des lignes et des colonnes, nous pouvons utiliser enumerate() :

for row_index, row in enumerate(matrix):
    for column_index, value in enumerate(row):
        print(f"[{row_index}][{column_index}] : {value}")

Initialiser un tableau

Une compréhension de liste permet de créer un tableau dont les éléments sont initialisés à zéro :

row_count = 2
column_count = 3

matrix = [
    [0] * column_count
    for _ in range(row_count)
]

matrix[0][0] = 10

print(matrix)
# [[10, 0, 0], [0, 0, 0]]

Chaque itération crée une nouvelle liste représentant une ligne. Le nom _ indique ici que la variable d'itération n’est pas utilisée.

Pour créer des lignes indépendantes, il faut éviter la construction suivante :

matrix = [[0] * column_count] * row_count

Elle répète les références à une même liste, au lieu de créer des lignes indépendantes. Une modification apparaît alors dans toutes les lignes :

matrix[0][0] = 10

print(matrix)
# [[10, 0, 0], [10, 0, 0]]

Les tableaux multidimensionnels avec NumPy

Pour le calcul numérique, la bibliothèque tierce NumPy propose des tableaux multidimensionnels, avec des dimensions régulières et un type commun aux éléments.

import numpy as np

matrix = np.array([
    [10, 20, 30],
    [40, 50, 60]
])

print(matrix.shape)  # (2, 3)
print(matrix[1, 2])  # 60

L'attribut shape indique la taille de chaque dimension. Contrairement aux listes imbriquées, un tableau NumPy permet d’utiliser la syntaxe matrix[row, column].

Il permet également d’appliquer une opération à tous les éléments :

doubled = matrix * 2

print(doubled)
# [[ 20  40  60]
#  [ 80 100 120]]

Les listes imbriquées conviennent pour représenter des données structurées simples. Les tableaux NumPy sont adaptés aux calculs numériques portant sur des matrices ou des données à plusieurs dimensions.