Python: ocurrencia más cercana entre dos elementos en una lista

Dada una lista y dos elementos, x e y encuentran el índice de ocurrencia más cercano del elemento x del elemento y .

Entrada : test_list = [2, 4, 5, 7, 8, 6, 3, 8, 7, 2, 0, 9, 4, 9, 4], x = 4, y = 6 
Salida : 1 
Explicación : 4 es encontrado en el índice 1, 12 y 14, 6 está en el índice 5, el más cercano es el índice 1.

Entrada : test_list = [2, 4, 5, 7, 8, 6, 3, 8, 7, 2, 0, 9, 4, 9, 4], x = 7, y = 6 
Salida : 3 
Explicación : 7 es encontrado en el índice 3 y 8, 6 está en el índice 5, el más cercano es el índice 3. 

Método: Usar lista de comprensión + bucle + índice()

En esto, encontramos todos los índices de y usando la comprensión de listas, y luego obtenemos el índice de x usando index() , publicamos que el bucle se usa para obtener la diferencia de índice, el índice más cercano se devuelve como resultado.

Python3

# Python3 code to demonstrate working of
# Nearest occurrence of x from y in List
# Using list comprehension + loop + index()
 
 
# function to find index of nearest
# occurrence between two elements
def nearestOccurrenceIndex(test_list, x, y):
 
    # checking if both elements are present in list
    if x not in test_list or y not in test_list:
        return -1
    # getting indices of x
    x_idx = [idx for idx in range(len(test_list)) if test_list[idx] == x]
 
    # getting y index
    y_idx = test_list.index(y)
 
    # getting min_dist index
    min_dist = 1000000
    res = None
    for ele in x_idx:
 
        # checking for min ele, and updating index
        if abs(ele - y_idx) < min_dist:
            res = ele
            min_dist = abs(ele - y_idx)
    return res
 
 
# initializing list
input_list = [2, 4, 5, 7, 8, 6, 3, 8, 4, 2, 0, 9, 4, 9, 4]
 
# printing original list
print("The original list is : " + str(input_list))
 
# initializing x
x = 4
 
# initializing y
y = 6
 
# printing result
print("Minimum distance index: ", nearestOccurrenceIndex(input_list, x, y))

Producción:

La lista original es: [2, 4, 5, 7, 8, 6, 3, 8, 4, 2, 0, 9, 4, 9, 4] 
Índice de distancia mínima: 8 
 

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 *