파이썬에서 필터로 리스트 분할하기

Beginner

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

소개

Python 에서 주어진 필터를 기반으로 리스트를 두 그룹으로 나눌 수 있습니다. 이는 리스트 컴프리헨션 (list comprehension) 과 zip() 함수를 사용하여 수행할 수 있습니다. 이 챌린지에서는 리스트와 필터를 입력으로 받아 필터를 통과하는 요소와 통과하지 못하는 요소를 각각 포함하는 두 개의 리스트를 반환하는 함수를 작성해야 합니다.

리스트 분할 (Bifurcate List)

리스트 lst와 필터 filter를 입력으로 받아 두 개의 리스트를 반환하는 함수 bifurcate(lst, filter)를 작성하십시오. 첫 번째 리스트는 lst의 요소 중 필터를 통과하는 요소를 포함하고, 두 번째 리스트는 통과하지 못하는 요소를 포함해야 합니다.

이 함수를 구현하기 위해 리스트 컴프리헨션 (list comprehension) 과 zip() 함수를 사용할 수 있습니다. zip() 함수는 두 개 이상의 리스트를 입력으로 받아 각 튜플이 각 리스트의 해당 요소를 포함하는 튜플의 리스트를 반환합니다. 예를 들어, zip([1, 2, 3], [4, 5, 6])[(1, 4), (2, 5), (3, 6)]을 반환합니다.

이 함수를 사용하여 lstfilter를 동시에 반복하고 필터를 통과하는지 여부에 따라 요소를 적절한 리스트에 추가할 수 있습니다.

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

요약

이 챌린지에서는 주어진 필터를 기반으로 리스트를 두 그룹으로 나누는 방법을 배웠습니다. 리스트 컴프리헨션 (list comprehension) 과 zip() 함수를 사용하여 리스트와 필터를 동시에 반복하고, 필터를 통과하는지 여부에 따라 요소를 적절한 리스트에 추가했습니다.