 # Python | Find all different pairs with a difference equal to k

Examples :

`  Input:  [1, 5, 3, 4, 2], k = 3  Output:  [(5, 2), (4, 1)]  Input:  [8, 12, 16, 4, 0, 20], k = 4  Output:  [(8, 4), (12, 8), (16, 12), (4, 0), (20, 16)] `

Approach # 1: understanding Python list

We will use a list comprehension using two loops using & # 39; e1 & # 39; and & # 39; e2 & # 39; which will go through this list. We check if e1-e2 == k or not and return a tuple (e1, e2) accordingly. Finally, a list with the required tuples will be returned.

 ` # Python3 program to find all great ones ` ` # pairs with a difference equal to k `   ` def findPairs (lst, k): ````   return [(e1, e2) for e1 in lst  ```` for e2 in lst if (e1 - e2 ` ` = ` ` = ` ` k)] `   ` # Driver code ` ` lst ` ` = ` ` [` ` 1 ` `, ` ` 5 ` `, ` ` 3 ` `, ` ` 4 ` `, ` ` 2 ` `] ` ` k ` ` = ` ` 3 ` ` print ` ` (findPairs (lst, k)) `

Exit:

` [(5, 2), (4, 1)] `

Approach # 2:

This is an effective approach in relation to the above approach as it only uses space O (n). We take an empty list to store the output. Then we use a loop with an iterator & # 39; e & # 39; to move through the specified list. At each iteration, we check if there is e + k, i.e. the required integer pair for e is available or not. If yes, we add a tuple to res.

 ` # Python3 program to find all great ones ` ` # pairs with a difference equal to k `   ` def findPairs (lst, k): ```` res = [] for e in lst: if e + k in lst:   res.append ( tuple ((e, e + k)))   return res   # Driver code lst = [ 1 , 5 , 3 , 4 , 2 ] k = 3 print (findPairs (lst, k)) < / p> ```

Exit:

` [(1, 4), ( 2, 5)] `

Approach # 3: ` combinations () ` from the ` itertools ` module

The best approach is to use the built-in function from the itertools module.  combinations () creates an iterator for tuples of all combinations of n elements in the inputs. We use these combinations and display the ones that have a difference of "k".

 ` # Python3 program to find all great ones ` ` # pairs with a difference equal to k ` ` from ` ` itertools import combinations ````   def findPairs (lst, k): return [(x, y) for x, y in combinations (lst, r = 2 )    if abs (x - y) = = k]   # Driver code lst = [ 1 , 5 , 3 , 4 , 2 ] k = 3 print (findPairs (lst , k)) ```

Exit:

` [(1, 4), (5, 2)] `