Разделить список на две части
Напишите функцию bifurcate(lst, filter)
, которая принимает список lst
и фильтр filter
в качестве входных данных и возвращает список из двух списков. Первый список должен содержать элементы lst
, которые проходят фильтр, а второй список - элементы, которые не проходят его.
Для реализации этой функции можно использовать списочное выражение и функцию zip()
. Функция zip()
принимает два или более списков в качестве входных данных и возвращает список кортежей, где каждый кортеж содержит соответствующие элементы из каждого списка. Например, zip([1, 2, 3], [4, 5, 6])
возвращает [(1, 4), (2, 5), (3, 6)]
.
Можно использовать эту функцию для одновременного перебора как lst
, так и filter
и добавления элементов в соответствующий список в зависимости от того, проходят они фильтр или нет.
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'] ]