Programa Python para encontrar el siguiente elemento más cercano en una array

Dada una array, un conjunto de coordenadas y un elemento, la tarea es escribir un programa en Python que pueda obtener las coordenadas de los elementos en la próxima aparición.

Entrada: test_list = [[4, 3, 1, 2, 3], [7, 5, 3, 6, 3], [8, 5, 3, 5, 3], [1, 2, 3, 4, 6]], yo, j = 1, 3, K = 3

Salida: (1, 4)

Explicación: después de (1, 3), 3 se encuentra en (1, 4)

Entrada: test_list = [[4, 3, 1, 2, 3], [7, 5, 3, 6, 3], [8, 5, 3, 5, 3], [1, 2, 3, 4, 6]], yo, j = 2, 3, K = 3

Salida: (2, 4)

Explicación: después de (2, 3), 3 se encuentra en (2, 4)

Método: usar bucle y enumerar()

En esto, comenzamos la iteración desde las coordenadas requeridas y verificamos solo la siguiente K más cercana dentro del rectángulo formado desde la fila + 1, columna + 1 a la coordenada N, N. Devuelve -1, -1 si no se encuentra ninguna ocurrencia.

Ejemplo:

Python3

# get Nearest coord.
def near_coord(test_list, x, y, val):
    for idx, row in enumerate(test_list[x:]):
        for j, ele in enumerate(row):
  
            # checking for value at lower formed rectangle
            if ele == val and j > y:
                return idx + x, j
  
    # if no index found
    return -1, -1
  
  
# initializing list
test_list = [[4, 3, 1, 2, 3], [7, 5, 3, 6, 3],
             [8, 5, 3, 5, 3], [1, 2, 3, 4, 6]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing check coord
i, j = 1, 3
  
# initializing K
K = 3
  
# getting nearest coordinates
res_abs, res_ord = near_coord(test_list, i, j, K)
  
# printing result
print("Found K index : " + str((res_abs, res_ord)))

Producción:

La lista original es: [[4, 3, 1, 2, 3], [7, 5, 3, 6, 3], [8, 5, 3, 5, 3], [1, 2, 3, 4 , 6]]

Índice K encontrado: (1, 4)

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *