Listes imbriquées

9.4 Listes imbriquées

Objectifs d'apprentissage

À la fin de cette section, vous devriez être en mesure de :

  • Démontrer l'utilisation d'une liste de listes pour structurer des données.
  • Démontrer l'adressage d'éléments individuels à l'aide de l'indexation multidimensionnelle.
  • Utiliser des boucles imbriquées pour parcourir une liste de listes.

Liste de listes

Les listes peuvent être composées de tout type d'élément. Un élément de liste peut également être une liste. Ex. : [2, [3, 5], 17] est une liste valide dont la liste [3, 5] est l'élément à l'indice 1.

Lorsqu'une liste est un élément à l'intérieur d'une liste plus grande, elle est appelée une liste imbriquée (nested list). Les listes imbriquées sont utiles pour représenter des données multidimensionnelles. Lorsque chacun des éléments d'une liste plus grande est une liste plus petite, la liste plus grande est appelée une liste de listes (list-of-lists).

Ex. : Un tableau peut être stocké sous la forme d'une liste de listes à deux dimensions, où chaque ligne de données est une liste dans la liste de listes.

Faites le point

Liste de listes

Concepts en pratique

Listes

Pour chacune des questions ci-dessous, considérez la matrice suivante :


mat A= 7 4 5 3 9 6 1 2 8 mat A= 7 4 5 3 9 6 1 2 8
1.
Quelle serait la manière correcte de représenter matA en Python ?
  1. [[7, 4, 5], [3, 9, 6], [1, 2, 8]]
  2. [7, 4, 5
    3, 9, 6
    1, 2, 8]
  3. [[7, 3, 1], [4, 9, 2], [1, 2, 8]
2.
Quel serait l'indice correct pour le nombre 6 dans la liste ci-dessus ?
  1. [5]
  2. [2][1]
  3. [1][2]
3.
Quel serait le résultat du code suivant :
  print(matA[0])
  1. Error
  2. 7
  3. [7, 4, 5]

Utiliser des boucles imbriquées pour parcourir des listes imbriquées

Une structure de boucles imbriquées peut être utilisée pour parcourir une liste de listes. Pour une liste de listes à deux dimensions, une boucle for externe peut être utilisée pour les lignes, et une boucle for interne pour les colonnes.

Exemple 9.4

Parcourir une liste de listes

Le code ci-dessous montre comment parcourir une liste de listes.

La boucle externe à la ligne 9 parcourt élément par élément la liste plus grande. Chaque élément de la liste plus grande est une liste. La boucle interne à la ligne 10 parcourt chaque élément de chaque liste imbriquée.

1
"""Iterating a list-of-lists."""
2
3
# Create a list of numbers
4
list1 = [[1, 2, 3],
5
        [1, 4, 9],
6
        [1, 8, 27]]
7
8
# Iterating the list-of-lists
9
for row in list1:
10
  for num in row:
11
    print(num, end=" ")
12
  print()

La sortie du code ci-dessus est :

    1 2 3
    1 4 9
    1 8 27

Concepts en pratique

Parcourir une liste de listes

Pour chaque question ci-dessous, considérez la liste suivante :

my_list = [[7, 4, 5, 12],
          [24, 3, 9, 16],
          [12, 8, 91, -5]]
4.
Quel code affiche chaque nombre de my_list en commençant par 7, puis 4, et ainsi de suite pour finir par -5 ?
  1. for row in my_list:
      for elem in row:
        print(elem)
    
  2. for elem in my_list:
        print(elem)
    
5.
La fonction range() peut également être utilisée pour parcourir une liste de listes. Quel code affiche chaque nombre de my_list en commençant par 7, puis 4, et ainsi de suite, pour finir par -5, à l'aide de boucles de comptage for ?
  1. for column_index in range(0, len(my_list[0])):
      for row_index in range (0, len(my_list)):
        print(my_list[row_index][column_index])
    
  2. for row_index in range(0, len(my_list)):
      for column_index in range (0, len(my_list)):
        print(my_list[row_index][column_index])
      print()
    
  3. for row_index in range(0, len(my_list)):
      for column_index in range (0, len(my_list[0])):
        print(my_list[row_index][column_index])
    

À vous d'essayer

Multiplication de matrices

Écrivez un programme qui calcule le produit matriciel des matrices matW et matZ ci-dessous et affiche le résultat. Le résultat attendu est présenté.

mat W= 13 4 5 2 −9 7 7 3 19 mat Z= 2 1 5 3 7 9 −1 13 19 mat W= 13 4 5 2 −9 7 7 3 19 mat Z= 2 1 5 3 7 9 −1 13 19
result= 33 106 196 −30 30 62 4 275 423 result= 33 106 196 −30 30 62 4 275 423

Dans la matrice résultat, chaque élément est calculé en fonction de la position de l'élément. Le résultat à la position [i][j] est calculé en utilisant la ligne i de la première matrice, W, et la colonne j de la deuxième matrice, Z.

Ex. :

result[1][2] = (ligne 1 dans W) multipliée par (colonne 2 dans Z)

result[1][2]= 2 -9 7 * 5 9 19 result[1][2]= 2 -9 7 * 5 9 19


result[1][2]=2*5+(-9)*9+7*19=10-81+133=62 result[1][2]=2*5+(-9)*9+7*19=10-81+133=62