w3resource

Python: Find the indices of the closest pair from given a list of numbers

Python Programming Puzzles: Exercise-66 with Solution

Write a Python program to find the indices of the closest pair from a list of numbers.

Input: [1, 7, 9, 2, 10]
Output:
[0, 3]

Input: [1.1, 4.25, 0.79, 1.0, 4.23]
Output:
[4, 1]

Input: [0.21, 11.3, 2.01, 8.0, 10.0, 3.0, 15.2]
Output:
[2, 5]

Pictorial Presentation:

Python: Find the indices of the closest pair from given a list of numbers.

Sample Solution:

Python Code:

#License: https://bit.ly/3oLErEI

def test(nums):
    closest_inds = None
    closest_dist = None
    for ind, num in enumerate(nums):
        for other_ind, num2 in enumerate(nums):
            if num != num2 and ((closest_dist is None) or abs(num - num2) < closest_dist):
                closest_dist = abs(num - num2)
                closest_inds = [ind, other_ind]
                if num <= num2:
                    closest_inds = [ind, other_ind]
                else:
                    closest_inds = [other_ind, ind]
    return closest_inds
 
nums = [1, 7, 9, 2, 10]
print("List of numbers:",nums)
print("Indices of the closest pair from the said list of numbers:")
print(test(nums))

nums = [1.1, 4.25, 0.79, 1.0, 4.23]
print("\nList of numbers:",nums)
print("Indices of the closest pair from the said list of numbers:")
print(test(nums))
nums = [0.21, 11.3, 2.01, 8.0, 10.0, 3.0, 15.2]
print("\nList of numbers:",nums)
print("Indices of the closest pair from the said list of numbers:")
print(test(nums))

Sample Output:

List of numbers: [1, 7, 9, 2, 10]
Indices of the closest pair from the said list of numbers:
[0, 3]

List of numbers: [1.1, 4.25, 0.79, 1.0, 4.23]
Indices of the closest pair from the said list of numbers:
[4, 1]

List of numbers: [0.21, 11.3, 2.01, 8.0, 10.0, 3.0, 15.2]
Indices of the closest pair from the said list of numbers:
[2, 5]

Flowchart:

Flowchart: Python - Find the indices of the closest pair from given a list of numbers.

Python Code Editor :

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Circular shift number.
Next: Find a string which, when each character is shifted (ASCII incremented) by shift.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.