Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 튜플 목록 필터링 – 특정 값 이상의 튜플만 추출하는 방법

튜플로 이루어진 목록에서 특정 값 n을 기준으로 조건에 맞지 않는 튜플을 제거해야 하는 경우가 종종 있습니다. 이럴 때 람다(lambda) 함수리스트 컴프리헨션(list comprehension)을 활용하면 간결하고 효율적으로 처리할 수 있습니다.

익명 함수(람다 함수)란?

익명 함수(anonymous function)는 이름 없이 정의되는 함수를 의미합니다. 일반적으로 Python에서는 def 키워드를 사용해 함수를 정의하지만, 익명 함수는 lambda 키워드를 통해 정의합니다.

람다 함수는 하나의 표현식만 가질 수 있지만, 인자는 여러 개를 받을 수 있습니다. 전달된 표현식을 평가한 결과를 그대로 반환하는 특징이 있습니다.

예제 코드

my_tuple = [('a', 130), ('b', 230), ('c', 25), ('z', 654), ('f', 69)]

print("The list of tuple is : ")
print(my_tuple)

my_result = [i for i in my_tuple if i[1] >= 100]

print("The resultant list of tuple is : ")
print(my_result)

실행 결과

The list of tuple is :
[('a', 130), ('b', 230), ('c', 25), ('z', 654), ('f', 69)]
The resultant list of tuple is :
[('a', 130), ('b', 230), ('z', 654)]

코드 설명

  • 여러 개의 튜플로 구성된 목록을 정의한 뒤, 콘솔에 출력합니다.
  • 리스트 컴프리헨션을 사용해 목록을 순회하면서 각 튜플의 두 번째 요소(i[1])가 100 이상인지 검사합니다.
  • 조건을 만족하는 튜플만 새로운 목록에 포함되며, 나머지는 자동으로 제외됩니다.
  • 필터링된 결과는 변수 my_result에 저장됩니다.
  • 마지막으로 해당 변수의 내용이 콘솔에 출력됩니다.

filter()와 람다 함수를 활용한 대안

동일한 작업은 filter() 함수와 람다 함수를 조합해서도 구현할 수 있습니다.

my_result = list(filter(lambda x: x[1] >= 100, my_tuple))

filter()는 첫 번째 인자로 전달된 함수가 참을 반환하는 요소만 걸러내며, 람다 함수를 조건 판별용으로 넘기면 별도의 함수 정의 없이 한 줄로 필터링 로직을 완성할 수 있습니다. 데이터 양이 많거나 조건이 자주 바뀌는 상황에서는 리스트 컴프리헨션이 가독성과 성능 면에서 유리한 편입니다.