튜플로 이루어진 리스트에서 각 튜플 쌍 간의 최소 차이를 구해야 하는 경우, Python의 min 메서드와 리스트 컴프리헨션(list comprehension)을 활용하면 간단하게 해결할 수 있습니다.
리스트 컴프리헨션은 리스트를 반복(iterate)하면서 특정 연산을 수행할 수 있는 축약형 문법입니다. min 메서드는 반복 가능한 객체(iterable) 내 값들 중 최솟값을 반환합니다.
참고로 Python의 리스트는 정수, 실수, 문자열 등 서로 다른 데이터 타입의 값을 함께 저장할 수 있습니다. 또한 '튜플의 리스트'란 이름 그대로 리스트 안에 여러 개의 튜플이 포함된 자료구조를 의미합니다.
아래에서 실제 동작 과정을 살펴보겠습니다.
예제 코드
my_list = [(67, 78), (39, 34), (23, 52), (99, 69), (78, 2), (11, 0)]
print("리스트 출력 : ")
print(my_list)
temp_val = [abs(b - a) for a, b in my_list]
my_result = min(temp_val)
print("튜플 쌍들 사이의 최소 차이 : ")
print(my_result)실행 결과
리스트 출력 : [(67, 78), (39, 34), (23, 52), (99, 69), (78, 2), (11, 0)] 튜플 쌍들 사이의 최소 차이 : 5
코드 설명
- 튜플들의 리스트를 정의하고 콘솔에 출력합니다.
- 리스트 컴프리헨션으로 리스트를 순회하며, 각 튜플의 두 번째 요소와 첫 번째 요소 사이의 절댓값 차이(
abs(b - a))를 계산합니다. - 계산된 차이 값들은 임시 변수
temp_val에 저장됩니다. min메서드를 임시 변수에 적용하여 전체 데이터 중 최솟값을 추출합니다.- 결과값을 변수
my_result에 할당한 뒤 콘솔에 출력합니다.
추가 팁: 한 줄로 더 간결하게 작성하기
임시 변수 없이 min 함수의 key 매개변수를 활용하면 코드를 더욱 간결하게 만들 수 있습니다.
my_result = min(abs(b - a) for a, b in my_list) print(my_result) # 출력: 5
이처럼 제너레이터 표현식을 min 함수에 직접 전달하면 중간 리스트를 생성하지 않아 메모리 측면에서도 더 효율적입니다.