Il y a maintenant un autre élément utile que nous devons ajouter à ce modèle, et c'est le filtrage d'éléments avec des conditions. Le filtrage d'éléments
Les compréhensions de liste peuvent filtrer les valeurs en fonction d'une condition arbitraire qui décide si la valeur résultante devient ou non une partie de la liste de sortie. Voici un exemple:
>>> carres_entiers_pairs = [x * x for x in range(10) if x% 2 == 0]
Cette compréhension de liste calculera une liste des carrés de tous les entiers pairs de 0 à 9. Si vous n'êtes pas familier avec ce que fait l'opérateur modulo (%), il renvoie le reste après division d'un nombre par un autre. Dans cet exemple, l'opérateur% nous donne un moyen simple de tester si un nombre est pair en vérifiant le reste après avoir divisé le nombre par 2. >>> carres_entiers_pairs
[0, 4, 16, 36, 64]
De la même manière que pour le premier exemple, cette nouvelle compréhension de liste peut être transformée en une boucle for équivalente:
carres_entiers_pairs = []
for x in range(10):
if x% 2 == 0:
(x * x)
Essayons de généraliser à nouveau la compréhension de la liste ci-dessus.
- Compréhension de liste python simple
Compréhension De Liste Python Simple
Pour une meilleure compréhension, nous pouvons diviser la compréhension de la liste en
trois parties:
flatten_matrix = [val
pour sous-liste dans la matrice
pour val dans la sous-liste]
La première ligne suggère ce que nous voulons ajouter à la liste. La deuxième ligne est la
boucle extérieure et la troisième ligne est la boucle intérieure. 'for sublist in matrix' renvoie les sous-listes à l'intérieur de la matrice une par une, ce qui serait:
[1, 2, 3], [4, 5], [6, 7, 8, 9]
'for val in sublist' renvoie toutes les valeurs à l'intérieur de la sous-liste. Donc si sublist = [1, 2, 3], 'for val in sublist' -> donne 1, 2, 3 en sortie un par un. Pour chaque valeur de ce type, nous obtenons la sortie en tant que val et nous l'ajoutons à la liste.
Cela permet de réaliser une itération sur chaque élément de la
liste ou de l'itération de départ:
nouvelle_liste = [ c for mot in liste for c in mot]
# affiche ['h', 'e', 'l', 'l', 'o', 't', 'h', 'e', 'w', 'o', 'r', 'l', 'd']
Dans l'exemple ci-dessus, la liste est construite en itérant sur chaque mot
de la liste et donc de créer un tableau de l'ensemble des lettres. Dictionnaire en compréhension ¶
Il est également possible de créer un dictionnaire en compréhension en construisant
un couple clé: valeur à partir d'une itération:
liste = [ "liste", "avec", "des", "mots"]
dictionnaire = { len ( e): e for e in liste}
print ( dictionnaire)
# Affiche {5: 'liste', 4: 'mots', 3: 'des'}
Par exemple, on peut ainsi inverser la clé et la valeur
dictionnaire = { "pomme": 8, "poire": 3, "orange": 7}
nouveau_dict = { v: k for k, v in dictionnaire. items ()}
print ( nouveau_dict)
# Affiche {8: 'pomme', 3: 'poire', 7: 'orange'}