Avinash Singh
Avinash Singh

Reputation: 132

Find number of pairs that add up to a specific number from two different lists?

a = [1,2,3,4,5,6,7]
b  = [56,59,62,65,67,69]


def sumOfTwo(a,b,v):
    for i in range (len(a)):
        val_needed = v - a[i]
        for j in range (len(b)):
            if b[j] == val_needed:
                x = b[j]
                y = a[i]             
    print(x,y) 

sumOfTwo(a,b,v=70)

Output: 5 65

What if more pairs are possible from the given lists in the problem, how do I do that? Help. What are more ways to achieve this?

Upvotes: 1

Views: 56

Answers (2)

Jan
Jan

Reputation: 43199

Using a list comprehension:

a = [1,2,3,4,5,6,7]
b = [56,59,62,65,67,69]

c = [(x, y)
     for x in a
     for y in b
     if x + y == 70]

print(c)

This yields

[(1, 69), (3, 67), (5, 65)]

Upvotes: 2

Miguel Betegón
Miguel Betegón

Reputation: 53

If you just want to print matched values, you just have to indent the print statement to be inside theif, as stated below. Also, you should use a more pythonic approach to for loops and also for variable assignments.

a = [1,2,3,4,5,6,7]
b  = [56,59,62,65,67,69]


def sumOfTwo(a,b,v):
    for i in a:
        val_needed = v - i
        for j in b:
            if j == val_needed:
                x, y = j, i
                print(x,y)

sumOfTwo(a,b,v=70)

Upvotes: 3

Related Questions