Compréhensions Python

Les compréhensions Python sont une manière unique de traiter les données qui peut construire une nouvelle structure de séquence de données à partir d'une séquence de données.

Les compréhensions Python sont une syntaxe puissante et concise, adaptée pour générer des listes, des dictionnaires, des ensembles et des générateurs.

Lorsque vous utilisez des compréhensions, vous devez faire attention à la lisibilité et essayer de garder les expressions concises, afin de ne pas affecter la lisibilité et la maintenabilité du code.

Python prend en charge les compréhensions pour diverses structures de données :

  • Compréhension de liste
  • Compréhension de dictionnaire (dict)
  • Compréhension d'ensemble
  • Compréhension de tuple

Compréhension de liste

Le format de la compréhension de liste est :

[表达式 for 变量 in 列表] 
[out_exp_res for out_exp in input_list]

或者 

[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]
  • out_exp_res : l'expression permettant de générer les éléments de la liste, qui peut être une fonction avec une valeur de retour.
  • for out_exp in input_list: parcourt input_list et passe out_exp dans l'expression out_exp_res.
  • if condition: une instruction conditionnelle qui peut filtrer les valeurs de la liste qui ne remplissent pas la condition.

Filtrer les listes de chaînes dont la longueur est inférieure ou égale à 3, et convertir les restantes en lettres majuscules :

Exemple

>>> names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
>>> new_names = [name.upper()for name in names if len(name)>3]
>>> print(new_names)
['ALICE', 'JERRY', 'WENDY', 'SMITH']

Calculer les entiers inférieurs à 30 qui sont divisibles par 3 :

Exemple

>>> multiples = [i for i in range(30) if i % 3 == 0]
>>> print(multiples)
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

Compréhension de dictionnaire

Le format de base de la compréhension de dictionnaire :

{ key_expr: value_expr for value in collection }

ou 

{ key_expr: value_expr for value in collection if condition }

Créer un dictionnaire à l'aide de chaînes de caractères et de leurs longueurs :

Exemple

listdemo = ['Google','Example', 'Taobao']
# Utiliser les chaînes de la liste comme clés et les longueurs des chaînes comme valeurs pour former des paires clé-valeur
>>> newdict = {key:len(key) for key in listdemo}
>>> newdict
{'Google': 6, 'Example': 6, 'Taobao': 6}

Fournissez trois nombres, utilisez les trois nombres comme clés et les carrés des trois nombres comme valeurs pour créer un dictionnaire :

Exemple

>>> dic = {x: x**2 for x in (2, 4, 6)}
>>> dic
{2: 4, 4: 16, 6: 36}
>>> type(dic)
<class 'dict'>

Compréhension d'ensemble

Le format de base de la compréhension d'ensemble :

{ expression for item in Sequence }
ou 
{ expression for item in Sequence if conditional }

Calculez les carrés des nombres 1, 2, 3 :

Exemple

>>> setnew = {i**2 for i in (1,2,3)}
>>> setnew
{1, 4, 9}

Déterminez les lettres qui ne sont pas "abc" et affichez-les :

Exemple

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'d', 'r'}
>>> type(a)
<class 'set'>

Compréhension de tuple (expression génératrice)

La compréhension de tuple peut utiliser des types de données tels que les intervalles range, les tuples, les listes, les dictionnaires et les ensembles pour générer rapidement un tuple qui répond à des exigences spécifiées.

Le format de base de la compréhension de tuple :

(expression for item in Sequence )
ou 
(expression for item in Sequence if conditional )

L'utilisation de la compréhension de tuple est exactement la même que celle de la compréhension de liste, sauf que la compréhension de tuple utilise()des parenthèses pour entourer chaque partie, tandis que la compréhension de liste utilise des crochets[], de plus, le résultat renvoyé par la compréhension de tuple est un objet générateur.

Par exemple, nous pouvons utiliser le code suivant pour générer un tuple contenant les nombres 1-9 :

Exemple

>>> a = (x for x in range(1,10))
>>> a
<generator object <genexpr> at 0x7faf6ee20a50>  # La valeur renvoyée est un objet générateur

>>> tuple(a)       # En utilisant la fonction tuple(), vous pouvez directement convertir l'objet générateur en tuple
(1, 2, 3, 4, 5, 6, 7, 8, 9)
Autres extensions