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

Python 리스트 컴프리헨션과 max()로 튜플 레코드 목록의 최댓값 구하기

튜플로 구성된 레코드 목록에서 최댓값을 찾아야 할 때는 리스트 컴프리헨션(list comprehension)과 max 메서드를 활용하면 간단하게 해결할 수 있습니다.

리스트는 서로 다른 자료형의 값(정수, 실수, 문자열 등)을 하나의 자료구조에 함께 저장할 수 있습니다.

튜플 리스트란 리스트 안에 여러 개의 튜플이 포함된 형태를 말합니다. 리스트 컴프리헨션은 리스트를 반복하면서 특정 연산을 수행할 수 있도록 해주는 축약 문법으로, 코드를 더 간결하고 가독성 있게 만들어 줍니다.

max 메서드는 이터러블(iterable)에 포함된 모든 요소 중 가장 큰 값을 반환하는 내장 함수입니다.

아래는 이를 보여주는 예제입니다.

예제

my_list = [('Will', [67, 45, 89]), ('Jam', [34, 56,13]), ('Pow', [99, 123, 89]), ('Nyk', [0, 56, 5])]

print ("The list of tuples is : " )
print(my_list)

my_result = [(key, max(lst)) for key, lst in my_list]

print ("The maximum of list tuple attribute is : " )
print(my_result)

출력 결과

The list of tuples is :
[('Will', [67, 45, 89]), ('Jam', [34, 56, 13]), ('Pow', [99, 123, 89]), ('Nyk', [0, 56, 5])]
The maximum of list tuple attribute is :
[('Will', 89), ('Jam', 56), ('Pow', 123), ('Nyk', 56)]

설명

  • 튜플로 이루어진 리스트를 정의한 뒤 콘솔에 출력합니다.
  • 리스트 컴프리헨션을 사용해 리스트를 순회하면서, 언패킹(unpacking)을 통해 각 튜플의 키(key)와 리스트(lst)를 분리합니다.
  • 각 튜플 내부 리스트에 대해 max 함수를 적용하여 해당 값들 중 최댓값을 구합니다.
  • 연산 결과는 새로운 리스트 형태로 변수에 할당되며, 마지막에 콘솔에 출력됩니다.

참고: 대체 방법

리스트 컴프리헨션 대신 maplambda를 조합해도 동일한 결과를 얻을 수 있습니다.

my_result = list(map(lambda item: (item[0], max(item[1])), my_list))

두 방식 모두 시간 복잡도는 O(n × m)(n은 튜플 개수, m은 각 리스트의 길이)로 동일하므로, 상황에 맞게 가독성이 좋은 방식을 선택하면 됩니다.