Dividir una lista por filtro en Python

PythonPythonBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En Python, podemos dividir una lista en dos grupos basados en un filtro dado. Esto se puede hacer utilizando una comprensión de lista y la función zip(). En este desafío, se te pedirá escribir una función que tome una lista y un filtro como entrada y devuelva dos listas, una que contiene los elementos que pasan el filtro y la otra que contiene los elementos que no.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python/BasicConceptsGroup -.-> python/booleans("Booleans") 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/build_in_functions("Build-in Functions") subgraph Lab Skills python/booleans -.-> lab-13591{{"Dividir una lista por filtro en Python"}} python/comments -.-> lab-13591{{"Dividir una lista por filtro en Python"}} python/conditional_statements -.-> lab-13591{{"Dividir una lista por filtro en Python"}} python/for_loops -.-> lab-13591{{"Dividir una lista por filtro en Python"}} python/list_comprehensions -.-> lab-13591{{"Dividir una lista por filtro en Python"}} python/lists -.-> lab-13591{{"Dividir una lista por filtro en Python"}} python/tuples -.-> lab-13591{{"Dividir una lista por filtro en Python"}} python/function_definition -.-> lab-13591{{"Dividir una lista por filtro en Python"}} python/build_in_functions -.-> lab-13591{{"Dividir una lista por filtro en Python"}} end

Dividir una lista en dos

Escribe una función bifurcate(lst, filter) que tome una lista lst y un filtro filter como entrada y devuelva una lista de dos listas. La primera lista debe contener los elementos de lst que pasan el filtro, y la segunda lista debe contener los elementos que no.

Para implementar esta función, puedes utilizar una comprensión de lista y la función zip(). La función zip() toma dos o más listas como entrada y devuelve una lista de tuplas, donde cada tupla contiene los elementos correspondientes de cada lista. Por ejemplo, zip([1, 2, 3], [4, 5, 6]) devuelve [(1, 4), (2, 5), (3, 6)].

Puedes utilizar esta función para iterar sobre lst y filter simultáneamente y agregar los elementos a la lista adecuada según pasen o no el filtro.

def bifurcate(lst, filter):
  return [
    [x for x, flag in zip(lst, filter) if flag],
    [x for x, flag in zip(lst, filter) if not flag]
  ]
bifurcate(['beep', 'boop', 'foo', 'bar'], [True, True, False, True])
## [ ['beep', 'boop', 'bar'], ['foo'] ]

Resumen

En este desafío, aprendiste cómo dividir una lista en dos grupos basados en un filtro dado. Utilizaste una comprensión de lista y la función zip() para iterar sobre la lista y el filtro simultáneamente y agregar los elementos a la lista adecuada según pasen o no el filtro.