繁体   English   中英

从两个不同的列表中找出加起来等于特定数字的对数?

[英]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)

输出:5 65

如果问题中的给定列表中可能有更多对,我该怎么做? 帮助。 还有哪些方法可以实现这一目标?

如果您只想打印匹配的值,您只需将打印语句缩进if ,如下所述。 此外,您应该对for循环和变量赋值使用更Pythonic 的方法。

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)

使用列表理解:

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)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM