Cryssie
Cryssie

Reputation: 3175

Getting difference from all possible pairs from a list Python

I have an int list with unspecified number. I would like to find the difference between two integers in the list that match a certain value.

#Example of a list
intList = [3, 6, 2, 7, 1]

#This is what I have done so far

diffList = []

i = 0
while (i < len(intList)):
    x = intList[i]

    j = i +1
    while (j < len(intList)):
        y = intList[j]

        diff = abs(x-y)
        diffList.append(diff)

        j += 1
    i +=1

#Find all pairs that has a difference of 2
diff = diffList.count(2)
print diff

Is there a better way to do this?

EDIT: Made changes to the codes. This is what I was trying to do. What I want to know is what else can I use besides the loop.

Upvotes: 2

Views: 2952

Answers (2)

mgilson
mgilson

Reputation: 309891

seems like a job for itertools.combinations

from itertools import combinations
for a, b in combinations(intList, 2):
   print abs(a - b)

You could even turn this one into a list comprehension if you wanted to :)

[abs(a -b) for a, b in combinations(intList, 2)]

Upvotes: 10

Jace Browning
Jace Browning

Reputation: 12662

int_list = [3, 6, 2, 7, 1]
for x in int_list:
    for y in int_list:
        print abs(x - y)

Upvotes: 4

Related Questions