Friday, September 5, 2025
HomeLanguagesPython – Extract element with relative difference greater than K

Python – Extract element with relative difference greater than K

Given a list of numbers, the task is to write a Python program to extract all numbers with differences of the next and previous elements with a current greater than K.

Input : test_list = [2, 7, 4, 1, 9, 2, 3, 10, 1, 5], K = 4
Output : [9, 10]
Explanation : 9 has 1 as preceding element and 2 as succeeding. 8 and 7 are its difference respectively which are greater than 4.

Input : test_list = [2, 7, 4, 1, 9, 2], K = 4
Output : [9]
Explanation : 9 has 1 as preceding element and 2 as succeeding. 8 and 7 are its difference respectively which are greater than 4.

Method #1: Using loop

In this, we check using brute force if the next or previous element has elements less than K difference and omit them. Loop is used for the iteration of all the elements.

Python3




# Python3 code to demonstrate working of
# Extract element with relative difference
# greater than K Using loop
 
# initializing list
test_list = [2, 7, 4, 1, 9, 2, 3, 10, 1, 5]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 4
 
res = []
for idx in range(1, len(test_list)):
 
    # using abs to get absolute difference
    if abs(test_list[idx - 1] - test_list[idx]) > K\
            and abs(test_list[idx + 1] - test_list[idx]) > K:
        res.append(test_list[idx])
 
# printing result
print("The extracted difference elements : " + str(res))


Output

The original list is : [2, 7, 4, 1, 9, 2, 3, 10, 1, 5]
The extracted difference elements : [9, 10]

Time Complexity: O(n)
Auxiliary Space: O(n)

Method #2: Using list comprehension

This is similar to the above method, the difference only being the usage of list comprehension for availing a shorthand to solving the issue. 

Python3




# Python3 code to demonstrate working of
# Extract element with relative difference
# greater than K Using list comprehension
 
# initializing list
test_list = [2, 7, 4, 1, 9, 2, 3, 10, 1, 5]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 4
 
# using abs to get absolute difference
# list comprehension provides shorthand
res = [test_list[idx] for idx in range(
  1, len(test_list)) if abs(test_list[idx - 1] - test_list[idx]) > K
       and abs(test_list[idx + 1] - test_list[idx]) > K]
 
# printing result
print("The extracted difference elements : " + str(res))


Output

The original list is : [2, 7, 4, 1, 9, 2, 3, 10, 1, 5]
The extracted difference elements : [9, 10]

Time Complexity: O(n)
Auxiliary Space: O(n)

Method #3: Using numpy

Note: Install numpy module using command “pip install numpy”

Python3




#importing numpy
import numpy as np
   
# initializing list
test_list = [2, 7, 4, 1, 9, 2, 3, 10, 1, 5]
   
# printing original list
print("The original list is : " + str(test_list))
   
# initializing K
K = 4
   
# using np.diff to get absolute difference
res = [test_list[idx] for idx in range(1, len(test_list))
       if np.diff([test_list[idx - 1], test_list[idx]])[0] > K
       and np.diff([test_list[idx + 1], test_list[idx]])[0] > K]
   
# printing result
print("The extracted difference elements : " + str(res))


Output:

The original list is : [2, 7, 4, 1, 9, 2, 3, 10, 1, 5]
The extracted difference elements : [9, 10]

Time Complexity: O(n)
Auxiliary Space: O(n)

Method #4: Using filter()

  • Use filter() to iterate through all the elements in the test_list except the first and the last element (since we are checking the relative difference between adjacent elements).
  • The lambda function inside filter() checks whether the absolute difference between the current element and its adjacent elements is greater than K.
  • The resulting elements that satisfy the condition are stored in the list res.

Python3




test_list = [2, 7, 4, 1, 9, 2, 3, 10, 1, 5]
K = 4
 
res = list(filter(lambda x: abs(x - test_list[test_list.index(x) - 1]) > K and abs(x - test_list[test_list.index(x) + 1]) > K, test_list[1:-1]))
 
print("The extracted difference elements : " + str(res))


Output

The extracted difference elements : [9, 10]

Time Complexity: O(n)
Auxiliary Space: O(n), for storing the result in the list res

Dominic
Dominichttp://wardslaus.com
infosec,malicious & dos attacks generator, boot rom exploit philanthropist , wild hacker , game developer,
RELATED ARTICLES

Most Popular

Dominic
32269 POSTS0 COMMENTS
Milvus
81 POSTS0 COMMENTS
Nango Kala
6638 POSTS0 COMMENTS
Nicole Veronica
11802 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11868 POSTS0 COMMENTS
Shaida Kate Naidoo
6752 POSTS0 COMMENTS
Ted Musemwa
7028 POSTS0 COMMENTS
Thapelo Manthata
6704 POSTS0 COMMENTS
Umr Jansen
6721 POSTS0 COMMENTS