Comment utiliser la compréhension de liste en Python
L'utilisation en temps opportun de la compréhension de liste en Python peut faciliter les opérations de liste itératives. En plus d'être une seule ligne, elle est plus lisible et s'exécute plus efficacement.
Cependant, vous pourriez vous énerver si vous ne savez pas comment vous en servir. Cela peut même être plus frustrant si vous ne savez pas où l'appliquer dans votre code. Ici, nous allons vous montrer comment utiliser la compréhension de liste en Python avec des exemples réels.
Qu'est-ce que la compréhension de liste en Python et comment ça marche?
Créer une liste d'éléments avec Python est facile. Cependant, la tâche peut devenir un peu fastidieuse lorsque vous devez générer une liste de valeurs ou d'éléments à partir d'opérations mathématiques ou de chaîne. C'est à ce moment que l'utilisation de la compréhension de liste peut être utile.
Un avantage de l'utilisation de la compréhension de liste est que vous pouvez effectuer plusieurs opérations dans une seule liste.
En revanche, il crée de nouveaux éléments et les ajoute à une liste vide qu'il déclare automatiquement. Ainsi, au lieu de créer manuellement une liste vide et de l'ajouter avec une boucle for , la compréhension de liste de Python vous permet de le faire automatiquement sans vous soucier de la façon dont la nouvelle liste apparaît.
Le terme «compréhension de liste» vient du fait que toutes les opérations sont dans une liste Python affectée à une variable nommée. Comme nous l'avons indiqué précédemment, il vous permet d'effectuer des opérations spécifiques en une seule ligne de code. Il ajoute ensuite la sortie à une nouvelle liste.
En fin de compte, vous pouvez également utiliser la sortie d'une compréhension de liste à d'autres fins. C'est parce qu'il empile les expressions dans des variables séparées. Vous pourrez donc vous y référer plus tard.
Par exemple, vous pouvez gratter un site Web avec BeautifulSoup . Supposons que vous ayez l'intention d'obtenir le nom de tous les articles et leurs prix sur le site Web.
Vous décidez ensuite de mettre les données récupérées dans un fichier CSV ou Excel. La pratique idéale est de gratter le nom de tous les articles et leurs prix et de les placer tous les deux dans des colonnes séparées. Cependant, l'utilisation d'une compréhension de liste, dans ce cas, garantit que vous disposez des données récupérées dans des variables dédiées. Vous pouvez ensuite convertir ces variables en un DataFrame Python ultérieurement.
Regardez l'exemple ci-dessous:
Products = [i.text for i in bs.find_all('name tags')]
Price = [i.text for i in bs.find_all('price tags')]
Une fois que vous avez obtenu les variables en boucle, vous pouvez les placer dans des colonnes séparées dans un DataFrame en utilisant les Pandas de Python.
Comment créer et utiliser une compréhension de liste en Python
La boucle for est un itérateur essentiel dans une compréhension de liste. Généralement, une compréhension de liste en Python prend ce format:
ComprehensionVariable = [expression for items in list]
Printing ComprehensionVariable renvoie le résultat du code ci-dessus sous forme de liste.
Cependant, veillez à ne pas confondre une compréhension de liste avec une boucle ouverte for .
Par exemple, utilisons une boucle ouverte for pour obtenir une liste de tous les multiples de trois entre 1 et 30:
myList = []
for i in range(1, 11):
myList.append(i * 3)
print(myList)
Output: [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
Pour comparer les deux, faisons la même chose en utilisant une compréhension de liste:
multiplesOf3 = [i*3 for i in range(1, 11)]
print(multiplesOf3)
Output = [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
Vous pouvez également utiliser une compréhension de liste avec des instructions conditionnelles. L'exemple de code ci-dessous imprime tous les nombres impairs entre 1 et 10:
oddNumbers = [i for i in range(1, 11) if not i%2==2]
print(oddNumbers)
Output = [1, 3, 5, 7, 9]
Maintenant, réécrivons également le code ci-dessus en utilisant une boucle open for :
myList = []
for i in range(1, 11):
if not i%2 == 0:
myList.append(i)
print(myList)
Output: [1, 3, 5, 7, 9]
Une compréhension de liste accepte également les instructions if imbriquées:
oddNumbers = [i for i in range(1, 11) if not i%2==0 if i<4]
print(oddNumbers)
Output: [1, 3]
Il faut également une boucle for imbriquée:
someNums = [[i*2 for i in range(1, 3)] for _ in range(4)]
print(someNums)
Vous pouvez également avoir une simple boucle for imbriquée dans une compréhension de liste:
someNums = [i*2 for i in range(1, 3) for k in range(4)]
Vous pouvez également manipuler des chaînes avec la compréhension de liste Python. Jetons un coup d'œil à une contre-compréhension de mots ci-dessous:
word = ["This is a python list comprehension tutorial"]
wordCounter = [i.count(' ') + 1 for i in word]
print(wordCounter)
Output: 7
Une compréhension de liste peut également accepter une fonction qui effectue une opération spécifique. Insérons une fonction multiplicatrice qui obtient des nombres pairs dans une compréhension de liste pour voir comment cela fonctionne:
Numbers = [4, 7, 8, 15, 17, 10]
def multiplier(n):
multiple = n*2
return multiple
multipleEven = [multiplier(i) for i in Numbers if i%2==0]
print(multipleEven)
Output: [8, 16, 20]
Vous pouvez toujours écrire le code ci-dessus dans une seule fonction sans utiliser la compréhension. Mais une compréhension de liste est utile lorsque vous devez effectuer plusieurs itérations et placer chacune d'elles dans des variables séparées.
Par exemple, vous pouvez effectuer une autre opération sur n et avoir une variable dédiée pour cela. Modifions la compréhension ci-dessus pour générer des nombres pairs à partir de nombres impairs:
multipleEvenFromOdds = [multiplier(i) for i in Numbers if not i%2==0]
print(multipleEvenFromOdds)
Output: [14, 30, 34]
Compréhensions de dictionnaires et d'ensemble
En plus d'une compréhension de liste, Python propose également un dictionnaire et une fonctionnalité de compréhension d'ensemble.
Jetez un œil à l'exemple de compréhension du dictionnaire ci-dessous pour voir comment cela fonctionne:
corresponding = {i: i*2 for i in range(10) if not i%2==0}
print(corr)
Output: {1: 2, 3: 6, 5: 10, 7: 14, 9: 18}
Le code ci-dessus parcourt la liste des nombres entre 1 et 9 et en fait les clés. Il dit ensuite à Python de multiplier chaque clé par deux. Enfin, il présente les résultats de cette opération sous forme de valeurs correspondantes pour chaque clé du tableau résultant.
Une compréhension d'ensemble est un peu similaire à une compréhension de liste. Voici un exemple de compréhension d'ensemble:
numbers = {i**(2) for i in range(10) if i%4==0}
print(numbers)
Output: {0, 16, 64}
Cependant, contrairement à la compréhension de liste, la compréhension d'ensemble supprime les doublons:
nums = {i for i in range(20) if i%2==1 for k in range(10) if k%2==1}
print(nums)
Output: {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}
Vous pouvez essayer le code ci-dessus en utilisant une compréhension de liste pour voir en quoi ils diffèrent.
Pouvez-vous utiliser la compréhension de liste à chaque fois?
Nous avons jeté un œil à différents exemples de compréhension de liste et où vous pouvez les utiliser. Cependant, comme toute autre méthode Python, le cas d'utilisation d'une compréhension de liste dépend du problème spécifique que vous souhaitez résoudre. Par conséquent, vous ne devez l'utiliser que s'il est idéal pour le problème spécifique que vous souhaitez résoudre.
L'un des objectifs de la compréhension de liste est de simplifier votre code et de le rendre plus lisible. Alors, assurez-vous d'éviter la complexité lorsque vous traitez avec. Par exemple, une longue compréhension de Python peut devenir complexe à lire. Cela va à l'encontre de son objectif.