Diviser une liste en fonction d'une fonction

PythonPythonBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce défi, vous devrez écrire une fonction Python qui divise une liste en deux groupes en fonction du résultat d'une fonction de filtrage donnée. Il s'agit d'une tâche courante en programmation, en particulier lorsqu'il s'agit de traiter de grands ensembles de données.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/BasicConceptsGroup -.-> python/comments("Comments") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/ControlFlowGroup -.-> python/list_comprehensions("List Comprehensions") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/tuples("Tuples") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/lambda_functions("Lambda Functions") subgraph Lab Skills python/comments -.-> lab-13590{{"Diviser une liste en fonction d'une fonction"}} python/conditional_statements -.-> lab-13590{{"Diviser une liste en fonction d'une fonction"}} python/for_loops -.-> lab-13590{{"Diviser une liste en fonction d'une fonction"}} python/list_comprehensions -.-> lab-13590{{"Diviser une liste en fonction d'une fonction"}} python/lists -.-> lab-13590{{"Diviser une liste en fonction d'une fonction"}} python/tuples -.-> lab-13590{{"Diviser une liste en fonction d'une fonction"}} python/function_definition -.-> lab-13590{{"Diviser une liste en fonction d'une fonction"}} python/lambda_functions -.-> lab-13590{{"Diviser une liste en fonction d'une fonction"}} end

Diviser une liste en fonction d'une fonction

Écrivez une fonction bifurcate_by(lst, fn) qui prend une liste lst et une fonction de filtrage fn en arguments. La fonction doit diviser la liste en deux groupes en fonction du résultat de la fonction de filtrage. Si la fonction de filtrage renvoie une valeur vraie pour un élément, celui-ci doit être ajouté au premier groupe. Sinon, il doit être ajouté au second groupe.

Votre fonction doit renvoyer une liste de deux listes, où la première liste contient tous les éléments pour lesquels la fonction de filtrage a renvoyé une valeur vraie, et la seconde liste contient tous les éléments pour lesquels la fonction de filtrage a renvoyé une valeur fausse.

Utilisez une compréhension de liste pour ajouter des éléments aux groupes, en fonction de la valeur renvoyée par fn pour chaque élément.

def bifurcate_by(lst, fn):
  return [
    [x for x in lst if fn(x)],
    [x for x in lst if not fn(x)]
  ]
bifurcate_by(['beep', 'boop', 'foo', 'bar'], lambda x: x[0] == 'b')
## [ ['beep', 'boop', 'bar'], ['foo'] ]

Sommaire

Dans ce défi, vous avez appris à diviser une liste en deux groupes en fonction du résultat d'une fonction de filtrage donnée. Vous avez utilisé une compréhension de liste pour ajouter des éléments aux groupes, en fonction de la valeur renvoyée par la fonction de filtrage pour chaque élément. Il s'agit d'une technique utile en programmation, en particulier lorsqu'il s'agit de traiter de grands ensembles de données.