이 튜토리얼에서는 Python에서 자주 함께 사용되는 두 가지 핵심 도구인 람다(lambda) 표현식과 filter() 함수의 실전 활용 예제를 살펴보겠습니다. 먼저 각각의 개념을 간단히 이해한 후, 리스트에서 짝수만 추출하는 예제를 통해 실제로 어떻게 동작하는지 확인해 보겠습니다.
람다(lambda) 표현식이란?
람다 표현식은 이름 없는 간단한 함수를 한 줄로 작성할 수 있게 해주는 문법입니다. 별도의 def 문으로 함수를 정의하지 않고도 즉석에서 필요한 로직을 전달할 수 있어 코드가 간결해집니다.
예를 들어, 숫자가 짝수인지 판별하는 기능이 필요하다면 람다 표현식 한 줄로 손쉽게 처리할 수 있습니다.
filter(func, iter) 함수란?
filter(func, iter) 함수는 두 개의 인자를 받습니다. 첫 번째는 각 요소에 적용할 함수, 두 번째는 순회 가능한 객체(iterable)입니다.
filter 함수는 iterable의 모든 요소를 func에 하나씩 전달하고, 결과가 참(True)인 요소들만 모아 filter 객체를 반환합니다. 이 filter 객체는 반복자(iterator)나 리스트로 변환하여 사용할 수 있습니다.
여기서 중요한 점은, filter 함수의 첫 번째 인자로 람다 표현식을 바로 넣을 수 있다는 것입니다. 그럼 리스트에서 짝수만 걸러내는 예제를 살펴보겠습니다.
기대 입출력
입력: nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 출력: [2, 4, 6, 8, 10]
알고리즘
원하는 결과를 얻기 위해 다음 단계를 따릅니다.
1. 숫자 리스트를 초기화한다. 2. 짝수를 반환하는 조건의 람다 표현식을 작성하고, filter 함수에 iterable과 함께 전달한다. 3. 반환된 filter 객체를 리스트(반복 가능한 객체)로 변환한다. 4. 결과를 출력한다.
예제 코드
## 리스트 초기화 nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ## filter 함수 안에 람다 표현식 작성 ## 리스트의 모든 요소가 람다 표현식에 전달되며, ## 조건(x % 2 == 0)을 만족하면 True를 반환한다. ## filter 함수는 True가 반환된 값들을 filter 객체에 담아둔다. ## filter 객체를 리스트로 변환하면 조건을 만족하는 값들만 남는다. result = filter(lambda x: x % 2 == 0, nums) ## 변환 후 결과 출력 print(list(result))
실행 결과
위 프로그램을 실행하면 다음과 같은 출력을 얻을 수 있습니다.
[2, 4, 6, 8, 10]
코드 동작 원리
리스트의 각 요소가 차례대로 람다 표현식 x % 2 == 0에 전달됩니다. 2로 나눈 나머지가 0이면 짝수이므로 True가 반환되고, filter 함수는 해당 요소를 결과에 포함시킵니다. 홀수는 False를 반환하므로 제외됩니다. 최종적으로 list()로 변환하면 짝수만 담긴 새로운 리스트를 얻게 됩니다.
마무리
람다 표현식과 filter 함수를 조합하면 별도의 반복문 없이도 한 줄로 데이터를 원하는 조건에 맞게 걸러낼 수 있습니다. 이 패턴은 map(), sorted() 등 다른 함수형 도구와도 함께 활용되니 꼭 익혀두시기 바랍니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.