Compréhensions de listes

9.5 Compréhensions de listes

Objectifs d'apprentissage

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

  • Identifier les différentes composantes d'une instruction de compréhension de liste.
  • Mettre en œuvre le filtrage à l'aide d'une compréhension de liste.

Compréhensions de listes

Une compréhension de liste (list comprehension) est une instruction Python permettant de créer de manière concise une nouvelle liste à l'aide d'un motif.

La forme générale d'une instruction de compréhension de liste est présentée ci-dessous.

list_name = [expression for loop_variable in iterable]

list_name fait référence au nom de la nouvelle liste, qui peut être quelconque, et for est le mot-clé de la boucle for. Une expression définit ce qui fera partie de la nouvelle liste. loop_variable est un itérateur, et iterable est un objet qui peut être itéré, tel qu'une liste ou une chaîne de caractères.

Exemple 9.5

Créer une nouvelle liste avec une compréhension de liste

La compréhension de liste présentée ci-dessous dans le deuxième bloc de code produit le même résultat que la boucle for classique présentée dans le premier bloc. La liste obtenue est [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] dans les deux cas.

Création d'une liste de carrés à l'aide d'une boucle for.

    # Create an empty List.
    squares_list = []

    # Add items to a list, as squares of numbers starting at 0 and ending at 9.
    for i in range(10):
      squares_list.append(i*i)

Création d'une liste de carrés à l'aide d'une compréhension de liste.

    square_list = [i*i for i in range(10)]

L'expression i*i est appliquée pour chaque valeur de la variable loop_variable i.

Exemple 9.6

Un poème du Dr. Seuss

Une compréhension de liste peut être utilisée pour créer une liste à partir d'une autre liste. À la ligne 6, la boucle for parcourt la liste poem_lines.

1
# Create a list of words
2
words_list = ["one", "two", "red", "blue"]
3
4
# Use a list comprehension to create a new list called poem_lines
5
# Inserting the word "fish" attached to each word in words_list
6
poem_lines = [w + " fish" for w in words_list]
7
for line in poem_lines:
8
  print(line)

La sortie du code ci-dessus est :

    one fish
    two fish
    red fish
    blue fish

Concepts en pratique

Compréhensions de listes

1.
La composante d'une compréhension de liste définissant un élément de la nouvelle liste est _____.
  1. expression
  2. loop_variable
  3. conteneur
2.
Quel sera le contenu de b_list après l'exécution du code ci-dessous ?
a_list = [1, 2, 3, 4, 5]
b_list = [i+2 for i in a_list]
  1. [1, 2, 3, 4, 5]
  2. [0, 1, 2, 3, 4]
  3. [3, 4, 5, 6, 7]
3.
Que contient new_list après l'exécution de l'instruction ci-dessous ?
new_list = [i//3 for i in range(1, 15, 3)]
  1. [0.3333333333333333, 1.3333333333333333, 2.3333333333333335, 3.3333333333333335, 4.333333333333333]
  2. [0, 1, 2, 3, 4]
  3. [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

Filtrage à l'aide de compréhensions de listes

Les compréhensions de listes peuvent être utilisées pour filtrer des éléments d'une liste donnée. Une condition est ajoutée à la compréhension de liste.

list_name = [expression for loop_variable in container if condition]

Dans une compréhension de liste avec filtrage, un élément n'est ajouté à list_name que si la condition est remplie.

Faites le point

Filtrer une liste

Concepts en pratique

Filtrage à l'aide de compréhensions de listes

Pour chaque extrait de code utilisant une compréhension de liste, sélectionnez la liste résultante correcte dans new_list.

4.
my_list = [21, -1, 50, -9, 300, -50, 2]

new_list = [m for m in my_list if m < 0]
  1. [21, 50, 300, 2]
  2. [21, -1, 50, -9, 300, -50, 2]
  3. [-1, -9, -50]
5.
my_string = "This is a home."

new_list = [i for i in my_string if i in 'aeiou']
  1. [i, i, a, o, e]
  2. ['i', 'i'', 'a', 'o', 'e']
  3. Error
6.
new_list = [r for r in range (0, 21, 2) if r%2 != 0]
  1. []
  2. [21]
  3. [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

À vous d'essayer

Sélectionner des mots de cinq lettres

Écrivez un programme qui crée une liste contenant uniquement les mots de cinq lettres de la liste donnée et affiche la nouvelle liste.

À vous d'essayer

Livres commençant par "A"

Écrivez un programme qui sélectionne les mots qui commencent par un « A » dans la liste donnée. Assurez-vous que la nouvelle liste soit ensuite triée selon l'ordre lexicographique. Enfin, affichez la nouvelle liste triée.