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

Python – 다른 리스트의 값을 기준으로 최대 K 요소 구하는 방법

파이썬에서 두 개의 리스트가 있을 때, 한 리스트의 특정 값(K)과 일치하는 위치에 있는 다른 리스트의 요소들 중 최댓값을 구해야 하는 경우가 있습니다. 이럴 때는 간단한 반복문과 append 메서드, 그리고 max 함수를 활용하면 손쉽게 해결할 수 있습니다.

예제 코드

아래는 실제 동작을 보여주는 예제입니다.

my_list_1 = [62, 25, 32, 98, 75, 12, 46, 53]
my_list_2 = [91, 42, 48, 76, 23, 17, 42, 83]

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

print("정렬 후 첫 번째 리스트 : ")
my_list_1.sort()
print(my_list_1)

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

print("정렬 후 두 번째 리스트 : ")
my_list_2.sort()
print(my_list_2)

K = 42
print("K의 값 :")
print(K)

my_result = []
for index in range(len(my_list_1)):

    if my_list_2[index] == K:
        my_result.append(my_list_1[index])

my_result = max(my_result)

print("결과는 다음과 같습니다 :")
print(my_result)

실행 결과

첫 번째 리스트 :
[62, 25, 32, 98, 75, 12, 46, 53]
정렬 후 첫 번째 리스트 :
[12, 25, 32, 46, 53, 62, 75, 98]
두 번째 리스트 :
[91, 42, 48, 76, 23, 17, 42, 83]
정렬 후 두 번째 리스트 :
[17, 23, 42, 42, 48, 76, 83, 91]
K의 값 :
42
결과는 다음과 같습니다 :
46

코드 설명

  • 두 개의 리스트를 정의하고 콘솔에 출력합니다.

  • sort 메서드를 사용해 각 리스트를 오름차순으로 정렬한 뒤 콘솔에 표시합니다.

  • 기준이 되는 값 K를 정의하고 화면에 출력합니다.

  • 조건에 맞는 요소를 담을 빈 리스트를 하나 생성합니다.

  • 반복문을 통해 첫 번째 리스트의 인덱스를 순회합니다.

  • 순회 과정에서 두 번째 리스트의 해당 인덱스 값이 K와 일치하는지 확인합니다.

  • 일치한다면 첫 번째 리스트에서 같은 인덱스에 있는 요소를 빈 리스트에 추가(append)합니다.

  • 모든 순회가 끝난 후 max 함수로 수집된 요소들 중 최댓값을 구합니다.

  • 구해진 최댓값을 변수에 저장하고 콘솔에 출력합니다.

추가 팁: 더 파이썬다운 방법

위 코드는 zip과 리스트 컴프리헨션을 사용하면 더욱 간결하게 작성할 수 있습니다.

result = max(a for a, b in zip(my_list_1, my_list_2) if b == K)
print(result)  # 46

이처럼 zip으로 두 리스트를 묶어 조건을 검사하면 인덱스 관리 없이 가독성 높은 코드를 만들 수 있습니다. 단, 조건에 일치하는 값이 하나도 없을 경우 max 호출 시 ValueError가 발생할 수 있으므로, 필요하다면 기본값을 지정하는 max(..., default=None) 형태를 사용하는 것이 안전합니다.