Résolue

Utilisation de conditions dans une compréhension de liste

# Compréhension de liste # Python

On peut mettre du elif aussi dans une compréhension de liste, ou juste un if / else ?

Gabriel Trouvé

Mentor

Tu peux faire un truc du genre... imbriquer des expressions conditionnelles :

iterable = [1, 2, 3, 4, 5, 0, -1, -2]

print(["grand" if item > 3 else "moyen" if item > 0 else "vide ou zéro" for item in iterable])

result = []
for item in iterable:
    if item > 3:
        result.append("grand")
    elif item > 0:
        result.append("moyen")
    else:
        result.append("negatif ou zéro")
print(result)

Ok je vois le truc. C'est vrai que ça devient assez vite illisible mais c'était juste par curiosité, pour savoir si c'était possible ou non.

D'ailleurs petite remarque (qui est une question plus qu'une remarque).
Tu m'as montré la structure imbriquée de if / else dans une liste de compréhension : print(["grand" if item > 3 else "moyen" if item > 0 else "negatif ou zéro" for item in iterable]).

Puis un exemple qui produit le même résultat :

result = []
for item in iterable:
    if item > 3:
        result.append("grand")
    elif item > 0:
        result.append("moyen")
    else:
        result.append("negatif ou zéro")
print(result)

On est d'accord que si je veux reproduire stricto sensus la logique derrière le premier exemple (avec les comphéensions de liste), ça donnerait ça ?

result = []
for item in iterable:
    if item > 3:
        result.append("grand")
    else:
        if item > 0:
            result.append("moyen")
        else:
            result.append("negatif ou zéro")
print(result)

Gabriel Trouvé

Mentor

C'est ça, si tu veux reproduire exactement la même logique il faut imbriquer les if else :)

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.