리스트에 담긴 여러 튜플 중에서 두 요소의 차이가 특정 값 K보다 큰 튜플들을 걸러내야 하는 경우가 종종 있습니다. 이럴 때 파이썬의 내장 함수인 abs() 메서드를 활용하면 아주 간단하게 해결할 수 있습니다.
abs() 함수는 인자로 전달된 숫자의 절댓값을 반환하기 때문에, 튜플 내 두 요소의 차이가 음수든 양수든 상관없이 일관되게 비교할 수 있다는 장점이 있습니다.
아래 예제를 통해 구체적인 구현 방법을 살펴보겠습니다.
예제 코드
my_tuple = [(41, 18), (21, 57), (39, 22), (23, 42), (22, 10)]
print("튜플은 다음과 같습니다:")
print(my_tuple)
K = 20
my_result = [element for element in my_tuple if abs(element[0] - element[1]) <= K]
print("결과는 다음과 같습니다:")
print(my_result)실행 결과
튜플은 다음과 같습니다: [(41, 18), (21, 57), (39, 22), (23, 42), (22, 10)] 결과는 다음과 같습니다: [(39, 22), (23, 42), (22, 10)]
코드 설명
차이를 비교할 튜플들을 리스트 형태로 정의한 뒤 콘솔에 출력합니다.
기준값으로 사용할 변수 K의 값을 정의합니다.
리스트 컴프리헨션(list comprehension)을 사용하여 리스트의 각 요소를 순회하면서, 각 튜플의 두 요소 차이에 절댓값을 취한 값이 K 이하인 경우만 필터링합니다.
조건을 통과한 튜플들로만 구성된 새로운 리스트를 변수에 저장합니다.
최종 결과를 콘솔에 출력하여 확인합니다.
동작 원리 자세히 보기
예제에서 사용된 핵심 조건식 abs(element[0] - element[1]) <= K를 단계별로 분석하면 다음과 같습니다.
element[0] - element[1]: 튜플의 첫 번째 요소에서 두 번째 요소를 뺀 차이를 계산합니다.abs(...): 차이의 절댓값을 구하여 부호와 관계없이 크기만 비교할 수 있도록 만듭니다.<= K: 절댓값이 K보다 작거나 같으면 해당 튜플을 결과 리스트에 포함시키고, 그렇지 않으면 제외합니다.
예를 들어 첫 번째 튜플 (41, 18)의 경우 |41 − 18| = 23으로 K(20)보다 크기 때문에 결과에서 제외되고, 세 번째 튜플 (39, 22)은 |39 − 22| = 17로 K 이하이므로 결과에 포함됩니다.
이처럼 abs() 함수와 리스트 컴프리헨션만 활용하면 복잡한 반복문이나 조건문 없이도 한 줄의 코드로 깔끔하게 원하는 튜플만 추려낼 수 있습니다.