Maison >développement back-end >Tutoriel Python >Comment puis-je utiliser efficacement les compréhensions de listes pour les affectations conditionnelles en Python ?

Comment puis-je utiliser efficacement les compréhensions de listes pour les affectations conditionnelles en Python ?

DDD
DDDoriginal
2024-12-20 15:07:12740parcourir

How Can I Efficiently Use List Comprehensions for Conditional Assignments in Python?

Utilisation des compréhensions de liste pour les affectations conditionnelles

Dans une discussion récente, un programmeur a rencontré un défi lors de la conversion d'une boucle for avec un if/ sinon structurez-vous en une compréhension de liste concise. Le segment de code d'origine ressemblait à :

results = []
for x in xs:
    results.append(f(x) if x is not None else '')

L'intention était d'attribuer une chaîne vide aux éléments de la liste de résultats si les éléments correspondants dans xs étaient Aucun et d'appliquer une fonction f aux éléments non-Aucun.

La tentative initiale de création d'une compréhension de liste a échoué avec une SyntaxError :

[f(x) for x in xs if x is not None else '']

Pour utiliser avec succès les compréhensions de liste pour cette tâche, la syntaxe correcte est :

[f(x) if x is not None else '' for x in xs]

Cette modification maintient l'ordre de la vérification if/else, ce qui est essentiel pour une évaluation correcte.

Comprendre la syntaxe de compréhension de liste

En général, les compréhensions de listes avec affectations conditionnelles respectent ce qui suit syntaxe :

[f(x) if condition else g(x) for x in sequence]

où :

  • f(x) et g(x) représentent des expressions ou des fonctions à appliquer aux éléments en fonction de la condition.
  • la condition détermine si f(x) ou g(x) sera évalué.

De plus, pour les compréhensions de listes qui impliquent uniquement filtrant les éléments en fonction d'une condition, la syntaxe est :

[f(x) for x in sequence if condition]

Expressions conditionnelles au-delà de la compréhension de liste

Il est à noter que les expressions conditionnelles comme celles utilisées dans la compréhension de liste ne sont pas exclusifs à cette construction. Ils peuvent être utilisés dans diverses situations où un choix entre deux valeurs d'expression est requis en fonction d'une condition, remplissant le même objectif que l'opérateur ternaire ? : dans d'autres langues.

Un exemple d'expression conditionnelle en dehors d'un compréhension de la liste :

value = 123
print(value, 'is', 'even' if value % 2 == 0 else 'odd')

Cette expression évalue si la valeur est divisible par 2 et imprime la chaîne correspondante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn