# Python – Nearest occurrence between two elements in a List

• Last Updated : 11 Jun, 2021

Given a list and two elements, x and y find the nearest occurrence index of element x from element y.

Input : test_list = [2, 4, 5, 7, 8, 6, 3, 8, 7, 2, 0, 9, 4, 9, 4], x = 4, y = 6
Output : 1
Explanation : 4 is found at 1, 12 and 14th index, 6 is at 5th index, nearest is 1st index.

Input : test_list = [2, 4, 5, 7, 8, 6, 3, 8, 7, 2, 0, 9, 4, 9, 4], x = 7, y = 6
Output : 3
Explanation : 7 is found at 3rd and 8th index, 6 is at 5th index, nearest is 3rd index.

Method : Using list comprehension + loop + index()

In this, we find all indices of y using list comprehension, and then get index of x using index(), post that loop is used to get index difference, the nearest index is returned as result.

## 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))`

Output:

The original list is : [2, 4, 5, 7, 8, 6, 3, 8, 4, 2, 0, 9, 4, 9, 4]
Minimum distance index:  8

My Personal Notes arrow_drop_up