Найти количество пар, которые складываются до определенного числа c из двух разных списков? - PullRequest
1 голос
/ 21 февраля 2020
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)

Вывод: 5 65

Что, если из заданных списков в задаче возможно большее количество пар, как мне это сделать? Помогите. Какие еще способы этого достичь?

Ответы [ 2 ]

3 голосов
/ 21 февраля 2020

Если вы просто хотите напечатать совпадающие значения, вам просто нужно сделать отступ для оператора print, чтобы он был внутри if, как указано ниже. Кроме того, вы должны использовать более pythoni c подход к for циклам, а также для назначения переменных.

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)
2 голосов
/ 21 февраля 2020

Использование понимания списка:

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)

Это дает

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