Python에서 튜플 리스트(list of tuples)의 N번째 열에서 최댓값을 구해야 할 때, 리스트 컴프리헨션과 max 메서드를 활용하면 간단하게 처리할 수 있습니다.
리스트 컴프리헨션은 리스트를 반복(iteration)하며 특정 연산을 수행할 수 있는 축약형 문법입니다. max 메서드는 이터러블(iterable) 객체 내부의 값들 중 가장 큰 값을 반환합니다.
참고로 리스트는 정수, 실수, 문자열 등 서로 다른 자료형의 값들을 함께 저장할 수 있는 자료구조이며, 튜플 리스트란 기본적으로 리스트 안에 여러 개의 튜플이 담긴 형태를 의미합니다.
예제 코드
my_list = [(67, 78, 39), (34, 23, 52), (99, 69, 78), (2, 11, 0)]
print("리스트는 다음과 같습니다:")
print(my_list)
N = 2
print("'N' 값이 초기화되었습니다")
my_result = max([sub[N] for sub in my_list])
print("튜플 리스트에서 N번째 열의 최댓값은 다음과 같습니다:")
print(my_result)실행 결과
리스트는 다음과 같습니다: [(67, 78, 39), (34, 23, 52), (99, 69, 78), (2, 11, 0)] 'N' 값이 초기화되었습니다 튜플 리스트에서 N번째 열의 최댓값은 다음과 같습니다: 78
코드 설명
- 튜플 리스트가 정의되고, 콘솔 화면에 출력됩니다.
- 'N' 변수가 초기화됩니다(여기서는 세 번째 열을 의미하는 인덱스 2).
- 리스트 컴프리헨션을 사용해 튜플 리스트를 반복하며 각 튜플의 N번째 요소만 추출한 후,
max메서드로 그중 최댓값을 구합니다. - 연산 결과는 변수에 할당됩니다.
- 해당 변수가 출력으로 콘솔에 표시됩니다.
대체 방법: key 인자 활용하기
리스트 컴프리헨션 대신 max 함수의 key 인자를 사용하면 더 간결하게 작성할 수도 있습니다.
# 람다 함수를 활용한 방법 my_result = max(my_list, key=lambda sub: sub[N])[N] # operator 모듈의 itemgetter를 활용한 방법 from operator import itemgetter my_result = max(map(itemgetter(N), my_list))
두 방식 모두 동일하게 78이라는 결과를 반환하며, 데이터 크기가 클 경우 itemgetter 방식이 약간 더 나은 성능을 보입니다. 상황에 맞는 방식을 선택하여 사용하면 됩니다.