Python - Compréhension de liste
Compréhension de la liste
La compréhension de liste offre une syntaxe plus courte lorsque vous souhaitez créer une nouvelle liste basée sur les valeurs d'une liste existante.
Exemple:
Sur la base d'une liste de fruits, vous voulez une nouvelle liste, contenant uniquement les fruits avec la lettre "a" dans le nom.
Sans compréhension de liste, vous devrez écrire une for
déclaration avec un test conditionnel à l'intérieur :
Exemple
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
Avec la compréhension de liste, vous pouvez faire tout cela avec une seule ligne de code :
Exemple
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x
for x in fruits if "a" in x]
print(newlist)
La syntaxe
newlist = [expression for item in iterable if condition == True]
La valeur de retour est une nouvelle liste, laissant l'ancienne liste inchangée.
État
La condition est comme un filtre qui n'accepte que les éléments dont la valeur est
True
.
Exemple
N'acceptez que les articles qui ne sont pas "apple":
newlist = [x for x in fruits if x != "apple"]
La condition
if x != "apple"
renverra True
pour tous les éléments autres que "pomme", faisant en sorte que la nouvelle liste contienne tous les fruits sauf "pomme".
La condition est facultative et peut être omise :
Exemple
Sans if
déclaration :
newlist = [x for x in fruits]
Itérable
L' itérable peut être n'importe quel objet itérable, comme une liste, un tuple, un ensemble, etc.
Exemple
Vous pouvez utiliser la range()
fonction pour créer un itérable :
newlist = [x for x in range(10)]
Même exemple, mais avec une condition :
Exemple
N'acceptez que les nombres inférieurs à 5 :
newlist = [x for x in range(10) if x < 5]
Expression
L' expression est l'élément actuel de l'itération, mais c'est aussi le résultat, que vous pouvez manipuler avant qu'il ne finisse comme un élément de liste dans la nouvelle liste :
Exemple
Définissez les valeurs de la nouvelle liste en majuscule :
newlist = [x.upper()
for x in fruits]
Vous pouvez définir le résultat comme vous le souhaitez :
Exemple
Définissez toutes les valeurs de la nouvelle liste sur "hello" :
newlist = ['hello' for x in fruits]
L' expression peut également contenir des conditions, non pas comme un filtre, mais comme un moyen de manipuler le résultat :
Exemple
Renvoyez "orange" au lieu de "banane":
newlist = [x if x != "banana" else "orange"
for x in fruits]
L' expression dans l'exemple ci-dessus dit :
"Renvoyer l'article si ce n'est pas banane, si c'est banane retour orange".