Introduction à la compréhension de la liste Python

La compréhension des listes Python est une autre façon de créer des listes à l'aide d'une opération d'itération. Cela fonctionne de la même manière qu'une boucle, mais LC est utilisé spécifiquement pour renvoyer des listes. Les compréhensions de liste ont des expressions entre crochets comme la création d'une liste normale, l'expression s'exécutera pour tous les éléments.

Les compréhensions de listes sont très utiles en science des données, où l'on lit des listes / filtre les noms de colonnes / supprime des éléments de listes, etc. Bien que nous puissions utiliser des boucles et des fonctions lambda pour effectuer certaines actions, la compréhension de listes fournit un moyen élégant et simple de les représenter.
Les compréhensions de liste peuvent être utilisées pour remplacer les méthodes map (), reduction () et filter ().
La compréhension de la liste est comme Set Theory des classes du secondaire.

Exemple:

( x: x is a natural number greater than 15 )
( x: x is a vowel in word 'Data Science', x is a vowel )

Créons une compréhension de liste pour les deux déclarations ci-dessus.

(x for x in range(0, 20) if x>15) (x for x in 'Data Science' if x in ('a', 'e', 'i', 'o', 'u'))

Production:

(16, 17, 18, 19) («a», «a», «i», «e», «e»)

La compréhension des listes est facile à comprendre et à mettre en œuvre. Fondamentalement, ceux-ci sont créés sur des tables. Il y a trois choses à considérer lors de l'écriture de la syntaxe pour la compréhension des listes.

  1. Paramètre de sortie
  2. L'itérable
  3. Conditions

La syntaxe peut avoir deux de ce qui précède ou 3 de ce qui précède comme syntaxe pour la compréhension de la liste.

Syntaxe:

(output parameter | The Iterable)
(output Parameter | The Iterable | Condition )

Exemples de compréhension de liste Python

Ici, nous verrons comment utiliser la compréhension de liste en utilisant python. Nous verrons les exemples d'une manière différente au fur et à mesure que nous l'exécuterons à l'aide de for loop, puis nous créerons le même à l'aide de listes de compréhension.

Exemple # 1: Trouver les carrés parfaits

Voici des exemples de carrés parfaits avec différentes conditions données ci-dessous:

1. Avec pour boucle

for i in range(1, 30):
if int(i**0.5)==i**0.5:
print(i)

2. Utilisation des compréhensions de liste

(x for x in range(1, 30) if int(x**0.5)==x**0.5)

Production:

Exemple # 2: obtenir uniquement les consonnes d'une phrase

Ici, nous prendrons une phrase arbitraire et nous essaierons d'obtenir les consonnes dans la phrase comme notre sortie.

1. Utilisation de la boucle For

def consonants_for(sentence):
vowels = 'aeiou'
consonants = () for x in sentence:
if x not in vowels:
consonants.append(x)
return ''.join(consonants)
sentence = 'we are studying list comprehensions'
print("With For Loop : " + consonants_for(sentence))

Production:

Avec pour boucle: wr stdyng lst cmprhnsns

2. Utilisation de la compréhension de liste

def consonants_lc(sentence):
vowels = 'aeiou'
return ''.join(( x for x in sentence if x not in vowels))
sentence = 'we are studying list comprehensions'
print("Using List Compr: " + consonants_lc(sentence))

Production:

Utilisation de List Compr: wr stdyng lst cmprhnsns

Exemple # 3: création d'un dictionnaire à partir de deux, contrairement aux listes

Voici des exemples de dictionnaire avec différentes conditions données ci-dessous:

1. Utilisation de la boucle For

def dict_for(keys, values):
dictionary = ()
for i in range(len(keys)):
dictionary(keys(i)) = values(i) return dictionary
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("FOR-loop result: " + str(dict_for(Movie, Actor)))

Production:

Résultat de la boucle FOR: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')

2. Utilisation de la compréhension de liste

def dict_lc(keys, values):
return ( keys(i) : values(i) for i in range(len(keys)) )
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("LC result : " + str(dict_lc(Movie, Actor)))

Production:

Résultat LC: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')

Avantages de la compréhension de la liste Python

Les compréhensions de liste effectuent la même tâche, mais d'une manière différente!

La compréhension de liste présente de nombreux avantages par rapport à la boucle et à d'autres méthodes. Certains des avantages sont les suivants:

  1. Les compréhensions de liste sont faciles à comprendre et rendent le code élégant. Nous pouvons écrire le programme avec des expressions simples.
  2. Les compréhensions de listes sont bien plus rapides que pour les boucles et d'autres méthodes comme une carte. (La même chose est expliquée dans l'exemple ci-dessous:

Nous prendrons l'exemple 1 comme référence et nous calculerons le temps mis par différentes méthodes pour exécuter la même fonction. Tout d'abord, nous verrons le temps pris par «for loop» puis le temps est pris par la méthode map () et enfin nous verrons le temps pris par les listes de compréhension.

Un tableau montre le temps pris par les différentes techniques.

1. Pour boucle

Exemple d'utilisation de la boucle for donnée ci-dessous:

Code:

def perf_square(x):
output = () for i in x:
if int(i**0.5)==i**0.5:
output.append(i)
return output
%timeit perf_square(range(1, 30))

2. Méthode de la carte

Exemple utilisant la méthode de carte donnée ci-dessous:

Code:

def perf_square_map(x):
return map(lambda i: i**0.5==i**0.5, x)
%timeit perf_square_map(range(1, 30))

3. Liste des compréhensions

Exemple utilisant la compréhension de liste donnée ci-dessous:

Code:

def perf_square_lc(x):
return (i**0.5 == i**0.5 for i in x) %timeit perf_square_lc(range(1, 30))

Production:

MéthodeTemps
Pour boucle787 ns
Méthode Map ()518 ns
Liste des compréhensions276 ns

Clairement, le temps d'exécution de la compréhension de la liste est 2, 85 fois plus rapide que pour la boucle et 1, 87 fois plus rapide que la méthode de la carte. La compréhension des listes laisse derrière elle d'autres méthodes avec une grande marge. Il pourrait y avoir des spéculations alors pourquoi ne pas simplement utiliser LC à tous les endroits et pas des boucles? LC est plus rapide dans la plupart des cas et il peut remplacer les boucles dans près de 80% des cas. Mais nous ne pouvons pas remplacer les boucles, dans certains cas, nous avons un bon nombre de conditions et les classes sont imbriquées dans une boucle. Dans ces cas, l'utilisation de LC pourrait être assez lourde et non réalisable également. Il vaut mieux opter pour des boucles dans de telles situations. Bien que l'on puisse utiliser la compréhension de liste dans les boucles pour remplacer les autres boucles. Cela réduira le temps d'exécution et maintiendra la convivialité du code.

  • Nous pouvons imbriquer plusieurs conditions dans une liste de compréhension.
  • LC peut effectuer plusieurs manipulations de variables.
  • Il n'est pas nécessaire de fournir une commande distincte pour obtenir la sortie.
  • La compréhension des listes réduit la complexité du code.
  • Les compréhensions de liste sont efficaces.

Conclusion

Les compréhensions de liste sont utilisées pour créer des listes à partir du processus itératif. Les compréhensions de liste sont faciles à comprendre / implémenter et rendent le code élégant. Les listes de compréhension sont compactes et conviviales.

Nous avons discuté de la syntaxe des listes de compréhension avec quelques bons exemples perspicaces. Enfin, nous avons écrit un programme pour obtenir le timing de chaque méthode. Nous avons conclu que la LC est 2, 85 fois plus rapide que pour la boucle et 1, 87 fois plus rapide que la méthode map ().

Articles recommandés

Ceci est un guide pour la compréhension de la liste Python. Ici, nous discutons des avantages de la compréhension de la liste python ainsi que de la syntaxe et des exemples avec différentes conditions. Vous pouvez également consulter les articles suivants pour en savoir plus-

  1. Constructeur en Java
  2. Tri en Java
  3. Constructeur en Java
  4. JCheckBox en Java
  5. Guide de tri en C # avec des exemples
  6. Fonction de tri en Python avec des exemples
  7. Boucles dans VBScript avec des exemples
  8. Exemples pour implémenter la case à cocher dans Bootstrap