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

Python으로 튜플의 K번째 인덱스 요소에 가장 가까운 쌍 찾는 방법

튜플로 구성된 리스트에서 K번째 인덱스 요소와 가장 가까운 쌍(closest pair)을 찾아야 하는 경우, enumerate 메서드와 abs 메서드를 함께 활용하면 간단하게 해결할 수 있습니다.

enumerate는 리스트를 순회하면서 각 요소의 인덱스와 값을 동시에 반환해 주고, abs는 두 값 사이의 절대적인 차이를 계산하는 데 사용됩니다. 이 두 가지를 조합하면 K번째 위치의 값을 기준으로 가장 작은 차이를 가지는 튜플을 효율적으로 찾을 수 있습니다.

예제 코드

my_list = [(5, 6), (66, 76), (21, 35), (90, 8), (9, 0)]

print("리스트 :")
print(my_list)

my_tuple = (17, 23)
print("튜플 :")
print(my_tuple)

K = 2
print("K 값 :")
print(K)

min_diff, my_result = 999999999, None
for idx, val in enumerate(my_list):
    diff = abs(my_tuple[K - 1] - val[K - 1])
    if diff < min_diff:
        min_diff, my_result = diff, idx

print("K번째 인덱스 요소에 가장 가까운 튜플 :")
print(my_list[my_result])

실행 결과

리스트 :
[(5, 6), (66, 76), (21, 35), (90, 8), (9, 0)]
튜플 :
(17, 23)
K 값 :
2
K번째 인덱스 요소에 가장 가까운 튜플 :
(21, 35)

코드 설명

  • 먼저 튜플로 구성된 리스트를 정의하고 콘솔에 출력합니다.
  • 비교 기준이 될 튜플을 하나 정의한 뒤 화면에 표시합니다.
  • 비교할 인덱스 위치를 나타내는 K 값을 설정합니다.
  • enumerate를 사용해 리스트를 순회하면서, 기준 튜플과 각 요소의 K번째 값 사이의 절대 차이를 계산합니다.
  • 계산된 차이가 현재까지의 최솟값보다 작으면, 해당 차이와 인덱스를 변수에 갱신하여 저장합니다.
  • 모든 순회가 끝나면 최종 결과를 콘솔에 출력합니다.

동작 원리 살펴보기

위 예제에서 K는 2이므로, 각 튜플의 두 번째 요소끼리 비교하게 됩니다. 기준 튜플 (17, 23)의 두 번째 값은 23이며, 리스트 내 각 튜플의 두 번째 값인 6, 76, 35, 8, 0과의 차이는 각각 17, 53, 12, 15, 23입니다. 이 중 가장 작은 값인 12에 해당하는 (21, 35)가 최종 결과로 선택되는 것입니다.