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

Python에서 두 튜플 리스트의 동일 인덱스별 최댓값 구하기

두 개의 튜플 리스트에서 서로 같은 인덱스에 있는 값들 중 최댓값을 찾아야 할 때는 zip 메서드와 리스트 컴프리헨션(list comprehension)을 활용하면 간단하게 해결할 수 있습니다.

리스트 컴프리헨션은 리스트를 반복하면서 특정 연산을 수행할 수 있도록 해주는 축약형 문법입니다. 반복문을 한 줄로 작성할 수 있어 코드가 간결하고 가독성이 높아집니다.

zip 메서드는 여러 개의 이터러블(iterable)을 인자로 받아, 각 이터러블의 요소들을 묶어 튜플 형태로 집계한 뒤 그 결과를 반환합니다.

리스트는 정수, 실수, 문자열 등 서로 다른 자료형의 값을 함께 저장할 수 있습니다. 그리고 '튜플 리스트'란 이름 그대로, 리스트 안에 여러 개의 튜플이 포함된 자료구조를 의미합니다.

아래 예제를 통해 실제 동작 방식을 확인해 보겠습니다.

예제 코드

my_list_1 = [(67, 45), (34, 56), (99, 123)]
my_list_2 = [(10, 56), (45, 0), (100, 12)]

print("첫 번째 리스트 : ")
print(my_list_1)
print("두 번째 리스트 : ")
print(my_list_2)

my_result = [(max(x[0], y[0]), max(x[1], y[1]))
    for x, y in zip(my_list_1, my_list_2)]
print("두 리스트 사이의 최댓값 :")
print(my_result)

실행 결과

첫 번째 리스트 :
[(67, 45), (34, 56), (99, 123)]
두 번째 리스트 :
[(10, 56), (45, 0), (100, 12)]
두 리스트 사이의 최댓값 :
[(67, 56), (45, 56), (100, 123)]

코드 설명

  • 두 개의 튜플 리스트를 정의하고, 콘솔에 출력하여 내용을 확인합니다.
  • zip 메서드로 두 튜플 리스트의 요소들을 인덱스 순서대로 짝지어 결합한 후, max 메서드를 사용해 각 위치에서 더 큰 값을 추출합니다.
  • 리스트 컴프리헨션을 통해 이 결과가 하나의 새로운 리스트로 변환됩니다.
  • 연산 결과는 변수 my_result에 할당됩니다.
  • 마지막으로 이 변수를 콘솔에 출력하여 최종 결과를 보여줍니다.

이처럼 zip과 max 함수를 조합하면 별도의 반복문 없이도 두 리스트의 대응되는 인덱스 값들을 손쉽게 비교하고 최댓값만 모은 새로운 리스트를 만들 수 있습니다.