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

파이썬으로 행렬에서 다음으로 가까운 요소 찾기: 단계별 가이드

행렬(Matrix)에서 특정 위치 이후에 나타나는 다음 요소를 찾아야 하는 경우가 종종 있습니다. 예를 들어, 주어진 좌표 (x, y) 이후에서 특정 키 값이 처음 등장하는 인덱스를 구하는 작업입니다. 이를 해결하기 위해 리스트를 순회하며 조건을 검사하는 함수를 정의하고, 해당 함수를 호출하여 결과를 확인할 수 있습니다.

구현 예제

다음은 행렬에서 다음으로 가까운 요소를 찾는 파이썬 프로그램의 전체 코드입니다.

def get_nearest_elem(my_list, x, y, my_key):
    for index, row in enumerate(my_list[x:]):
        for j, elem in enumerate(row):

            if elem == my_key and j > y:
                return index + x, j

    return -1, -1

my_list = [[21, 32, 11, 22, 13], [91, 52, 31, 26, 33], [81, 52, 3, 22, 3], [11, 92, 83, 4, 9]]

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

i, j = 1, 3
my_key = 3

my_res_abs, my_res_ord = get_nearest_elem(my_list, i, j, my_key)

print("The found K index is :")
print(my_res_abs, my_res_ord)

실행 결과

The list is :
[[21, 32, 11, 22, 13], [91, 52, 31, 26, 33], [81, 52, 3, 22, 3], [11, 92, 83, 4, 9]]
The found K index is :
2, 4

코드 설명

  • 함수 정의: 'get_nearest_elem'이라는 이름의 함수가 정의되며, 이 함수는 리스트(행렬), 키 값, 그리고 두 개의 정수(시작 좌표 x, y)를 매개변수로 받습니다.

  • 요소 탐색: enumerate를 사용해 행렬의 각 행과 요소를 순회하며, 현재 요소가 키 값과 일치하고 열 인덱스(j)가 시작 좌표보다 큰 경우 해당 위치를 반환합니다. 슬라이싱 my_list[x:]를 통해 x번째 행부터 검색을 시작합니다.

  • 검색 실패 처리: 조건에 맞는 요소를 찾지 못하면 (-1, -1)을 반환하여 결과가 없음을 알립니다.

  • 데이터 초기화: 함수 외부에서 리스트의 리스트(2차원 배열) 형태의 행렬이 정의되고 콘솔에 출력됩니다.

  • 좌표 및 키 설정: 검색을 시작할 좌표 (i, j)와 찾고자 하는 키 값 my_key가 정의됩니다. 여기서는 (1, 3) 위치 이후의 값 3을 찾습니다.

  • 함수 호출 및 출력: 필요한 매개변수를 전달하여 함수를 호출한 뒤, 반환된 인덱스 값을 콘솔에 출력합니다.

위 실행 결과를 보면, 시작 좌표가 (1, 3)이므로 1번째 행의 3번째 열 이후부터 값 3을 검색합니다. 2번째 행([81, 52, 3, 22, 3])에서 인덱스 4에 위치한 값 3이 조건에 부합하므로 최종적으로 (2, 4)가 반환됩니다.