Разделить список в зависимости от функции

PythonPythonBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом испытании вы напишете функцию на Python, которая разделяет список на две группы в зависимости от результата заданной функции фильтрации. Это распространенная задача в программировании, особенно при работе с большими наборами данных.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) 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{{"Разделить список в зависимости от функции"}} python/conditional_statements -.-> lab-13590{{"Разделить список в зависимости от функции"}} python/for_loops -.-> lab-13590{{"Разделить список в зависимости от функции"}} python/list_comprehensions -.-> lab-13590{{"Разделить список в зависимости от функции"}} python/lists -.-> lab-13590{{"Разделить список в зависимости от функции"}} python/tuples -.-> lab-13590{{"Разделить список в зависимости от функции"}} python/function_definition -.-> lab-13590{{"Разделить список в зависимости от функции"}} python/lambda_functions -.-> lab-13590{{"Разделить список в зависимости от функции"}} end

Разделить список в зависимости от функции

Напишите функцию bifurcate_by(lst, fn), которая принимает список lst и функцию фильтрации fn в качестве аргументов. Функция должна разделить список на две группы в зависимости от результата функции фильтрации. Если функция фильтрации возвращает истинное значение для элемента, он должен быть добавлен в первую группу. В противном случае он должен быть добавлен ко второй группе.

Ваша функция должна возвращать список из двух списков, где первый список содержит все элементы, для которых функция фильтрации вернула истинное значение, а второй список содержит все элементы, для которых функция фильтрации вернула ложное значение.

Используйте списочное выражение для добавления элементов в группы в зависимости от значения, возвращаемого fn для каждого элемента.

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'] ]

Резюме

В этом испытании вы узнали, как разделить список на две группы в зависимости от результата заданной функции фильтрации. Вы использовали списочное выражение для добавления элементов в группы в зависимости от значения, возвращаемого функцией фильтрации для каждого элемента. Это полезный прием в программировании, особенно при работе с большими наборами данных.