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

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

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

Avant de commencer, il est utile de vous rappeler le fonctionnement des tableaux et des listes dans Python. Description du fonctionnement des tableaux et des listes dans Python. Description du fonctionnement des tableaux et des listes dans Python Les tableaux et les listes figurent parmi les structures de données les plus utiles en programmation - bien que peu de personnes les utilisent à leur plein potentiel. En savoir plus et comment utiliser les dictionnaires Python Dictionnaire Python: comment vous en servir pour écrire un meilleur code Dictionnaire Python: pour vous aider à écrire du code mieux Pensez à un dictionnaire Python en tant qu'ensembles non ordonnés de paires clé-valeur. Dans cet article, nous vous présentons comment travailler avec eux et les utiliser pour améliorer votre code Python. Lire la suite .

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

La compréhension des listes semble complexe, mais ce n’est vraiment pas le cas. En Python, c'est simplement un moyen rapide de filtrer ou d'affiner une liste en fonction de certains critères.

Cela vous évite d'avoir à écrire plusieurs lignes de code (surtout si vous êtes déjà en 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'emballer et d'écrire des compréhensions complexes difficiles à lire. Parfois, écrire plus de code est préférable, surtout si cela améliore la lisibilité. S'en tenir à des tâches simples et garder le code sous une responsabilité unique.

Comment utiliser les listes de compréhension en Python

Remarque: Ces exemples utilisent tous Python 3.6. Si vous n'êtes pas sûr des différences entre Python 3 et Python 2, lisez notre FAQ sur Python. Questions les plus fréquemment posées sur la programmation Python Questions les plus fréquemment posées sur la programmation Python Dans cet article, nous allons vous guider tout ce que vous devez savoir sur Python en tant que débutant. Lire la suite, où nous couvrons cette question et plus.

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

lettres = ['a', 'b', 'c', 'd'] print (lettres) upper_letters = [] pour lettre en lettres: resultat = letter.upper () upper_letters.append (result) print (upper_letters)

Maintenant, voici la même logique exacte, sauf que celle-ci est effectuée sur une seule ligne de code en utilisant une compréhension de base de la liste Python:

lettres = ['a', 'b', 'c', 'd'] print (lettres) upper_letters = [x.upper () pour x en lettres] print (upper_letters) 

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..

Brisons cet exemple simple.

Cet exemple crée une liste appelée des lettres. Cela stocke les lettres minuscules “une”, “b”, “c”, et “ré”. Si vous voulez 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-facultatif 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 efficacement “pour chaque lettre de la liste, convertissez-les en majuscules et renvoyez le résultat sous forme de nouvelle liste.”

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

Une compréhension de liste comprend trois parties (nous couvrirons la troisième partie ci-dessous). La compréhension de la liste doit commencer et se terminer par des crochets ([ et ]). Voici comment cela 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 va commencer comme “une”, et alors “b”, etc.

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 à “UNE”, et alors “B” etc.

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

Comme nous l'avons mentionné ci-dessus, il y a une troisième partie pour lister 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 à dire “me faire une nouvelle liste, basée sur cette ancienne liste, mais n'inclure que des éléments qui répondent à mes critères”.

Voici à quoi ça ressemble:

ages = [1, 34, 5, 7, 3, 57, 356] print (ages) old_ages = [x pour x dans les âges si x> 10] print (old_ages)

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 ce 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> 10 et x < 100 and x is not None]

Ce code fonctionne, mais il commence à devenir 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] print (lettres) upper_letters = [x.upper () pour x en lettres] print (upper_letters)

C'est un code 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 gérer certaines exceptions:

lettres = ['a', 'b', 'c', 'd', 1] print (lettres) upper_letters = [] pour lettre en lettres: essayer: result = letter.upper () upper_letters.append (result) excepté AttributeError: pass # ne rien imprimer (upper_letters)

Commencez à utiliser les compréhensions de la liste Python

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

Peut-être contrôlerez-vous un Arduino avec Python Comment programmer et contrôler un Arduino avec Python Comment programmer et contrôler un Arduino avec Python Malheureusement, il est impossible de programmer directement un Arduino en Python, mais vous pouvez le contrôler via USB à l'aide d'un Python programme. Voici comment. En savoir plus ou sur une caméra de sécurité réseau DIY Python Came de sécurité réseau DIY Pan et Tilt avec Raspberry Pi Came de sécurité réseau Pan & Tilt DIY avec Raspberry Pi Découvrez comment réaliser une caméra de sécurité panoramique et inclinable à distance avec un Raspberry Pi. Ce projet peut être complété en une matinée avec seulement les parties les plus simples. Lire la suite ?

Explorez plus sur: Tutoriels de codage, Python.