파이썬에서 두 개의 리스트가 있을 때, 한 리스트의 특정 값(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) 형태를 사용하는 것이 안전합니다.