Accueil

Comment utiliser les interprétations de liste Python (et quand ne pas les utiliser)

Added 2018-06-26


Vous avez peut-être entendu parler de la compréhension de la liste de Python. C’est peut-être même quelque chose que vous avez utilisé sans vraiment comprendre. Le moment est venu d'apprendre, car nous couvrons tout ce que vous devez savoir sur la compréhension de liste en Python.

Qu'est-ce que la compréhension de liste Python?

Comprendre une liste semble complexe, mais ce n’est vraiment pas le cas. En Python, il s’agit simplement d’un moyen rapide de filtrer ou d’affiner une liste en fonction de certains critères.

Cela vous évite d’écrire plusieurs lignes de code (surtout si vous êtes déjà dans une boucle) et vous permet de garder la lisibilité de votre code.

Attention toutefois, la compréhension de la liste n’est pas toujours la solution. Il est facile de s’emporter et d’écrire des textes complexes difficiles à lire. Parfois, écrire plus de code est préférable, surtout si cela améliore la lisibilité. Tenez-vous en à des tâches simples et conservez le code sous une responsabilité unique.

Comment utiliser les listes de compréhension en Python

Considérez ce morceau de code qui copie un tableau et transforme chaque lettre de ce tableau en majuscule. Pour ce faire, il parcourt chaque élément du tableau:


lettres = ['a', 'b', 'c', 'd']
imprimer (lettres)

upper_letters = []
pour lettre en lettres:
  résultat = lettre.upper ()
  upper_letters.append (résultat)

print (upper_letters)

Apprendre la compréhension de la liste Python

Maintenant, voici la même logique exacte, sauf que l’on utilise une seule ligne de code utilisant une compréhension de base de la liste Python:


lettres = ['a', 'b', 'c', 'd']
imprimer (lettres)

upper_letters = [x.upper () pour x en lettres]

print (upper_letters)

Apprendre la compréhension de la liste Python

Comme vous pouvez le constater, le résultat est exactement le même, mais le processus implique beaucoup plus de code sans compréhension de liste.

Cessons cet exemple simple.

Cet exemple crée une liste appelée des lettres . Ceci stocke les lettres minuscules “a”, “b”, “c” et “d”. Supposons que vous souhaitiez que tous ces éléments de liste soient en majuscule? Eh bien, sans compréhension de la liste, vous devez créer une nouvelle liste pour stocker le résultat (appelé upper_letters ), boucle sur chaque élément de la des lettres  liste, convertissez chaque lettre (et stockez-la dans résultat - optionnel mais bonne pratique), puis ajoutez la lettre majuscule à la nouvelle liste. Quel travail!

La compréhension de la liste ici est presque exactement équivalente à l’alternative en boucle. Il dit effectivement «pour chaque lettre de la liste de lettres, convertissez-les en majuscules et renvoyez le résultat sous la forme d'une nouvelle liste».

La compréhension de liste ne peut fonctionner que sur des listes et doit en renvoyer une nouvelle. Allons plus loin.

Une compréhension de la liste comprend trois parties (nous couvrirons la troisième partie ci-dessous). Les compréhensions de liste doivent commencer et se terminer par des crochets ( [  et ] ). Voici comment il a été conçu et indique à Python que vous travaillerez avec une liste.

Entre les crochets, vous devez commencer par le résultat. C'est ce que vous voulez faire avec chaque élément de la liste.

Dans l'exemple ci-dessus, le code suivant convertit chaque élément (référencé par le nom de variable X ) en majuscule en utilisant le plus haut()  méthode, qui fait partie de la bibliothèque principale Python:


[x.upper () # ne fonctionnera pas, seulement la moitié de la compréhension à ce stade

Ensuite, vous devez indiquer à Python la liste sur laquelle travailler et affecter chaque élément individuel à une variable. C'est exactement  la même chose que la boucle for dans l'exemple long:


pour x en lettres

Chaque fois que la boucle passe sur la liste, la valeur de X  changera quel que soit l'élément actuel. Il commencera par «a», puis «b», et ainsi de suite.

Si vous mettez tout cela ensemble (et l’assignez à une variable appelée upper_letters ), vous aurez terminé:


upper_letters = [x.upper () pour x en lettres]

À présent, upper_letters  contiendra une liste de lettres majuscules, commençant par “A”, puis “B” et ainsi de suite.

La troisième partie de la compréhension de la liste en Python

Comme nous l’avons mentionné ci-dessus, il existe une troisième partie pour énumérer la compréhension.

Une fois que vous avez effectué les deux étapes ci-dessus, vous pouvez inclure une condition facultative. C'est comme utiliser un si  déclaration pour dire "fais-moi une nouvelle liste, basée sur cette ancienne liste, mais n'inclue que des éléments qui répondent à mes critères".

Voici à quoi ça ressemble:


âges = [1, 34, 5, 7, 3, 57, 356]
imprimer (âges)

old_ages = [x pour x dans les âges si x & gt; dix]
print (old_ages)

<16>

Cet exemple utilise une nouvelle liste appelée âge . le old_ages  la liste est assemblée en utilisant une compréhension de liste. le si  condition à la fin signifie que seuls les éléments de la liste qui répondent aux critères sont insérés dans la nouvelle liste. Dans cet exemple, tous les âges supérieurs à dix sont autorisés.

Quand ne pas utiliser les interprétations de liste Python

La compréhension des listes est incroyable une fois que vous avez compris, mais elle n’est pas utile dans toutes les circonstances. Vous ne devriez probablement pas l’utiliser quand vous avez besoin de plus d’une condition:


old_ages = [x pour x dans les âges si x & gt; 10 et x & lt; 100 et x n'est pas Aucun]

Ce code fonctionne, mais il commence à être long et déroutant. De même, un simple appel de fonction risque de ne pas fonctionner. Dans cet exemple, vous obtiendrez une erreur:


lettres = ['a', 'b', 'c', 'd', 2]
imprimer (lettres)

upper_letters = [x.upper () pour x en lettres]
print (upper_letters)

<17>

Ce code est parfaitement valide, mais comme vous ne pouvez pas mettre un chiffre en majuscule, cela ne fonctionnera pas. C’est un cas où la boucle la plus longue est réellement préférable, car vous pourrez effectuer certaines opérations de gestion des exceptions:


lettres = ['a', 'b', 'c', 'd', 1]
imprimer (lettres)

upper_letters = []

pour lettre en lettres:
  essayer:
    résultat = lettre.upper ()
    upper_letters.append (résultat)
  sauf AttributeError:
    passe # ne fait rien

print (upper_letters)

<18>

Commencez à utiliser les compréhensions de la liste Python

Maintenant que vous savez à quel point il est facile de comprendre une liste en Python, il n’ya aucune raison de ne pas l’utiliser. Rappelez-vous simplement de garder les choses simples et de considérer la lisibilité avant tout.






Nuage de tags

Choix de L'éditeur


Thomas Becket

Je suis un écrivain indépendant qui couvre la programmation et les logiciels.
Je suis étudiant en informatique et je m'intéresse à la programmation, aux logiciels et à la technologie
Gadgets technologiques et critiques 2019