繁体   English   中英

Python从列表中找到两个数字的和

[英]Python find sum of two numbers from list

我正在尝试编写一些代码来检查数字是否是列表/词典中任何两个数字的总和,如果找到数字,它将停止运行。 但是,我遇到了一些错误。 也许我的逻辑是错误的,但这是我的代码:

a = [1,2,3,4,5,6,7,8,9]

randomNumber = 8

print len(a)
length_of_a = len(a)
for first in range(0,length_of_a -1):
    aa = a
    bb = a
    del bb[first]
    length_of_b = len(bb)
    print bb, length_of_b
    for second in range(0, length_of_b-1):
        print aa[first], bb[second]
        x = aa[first] + bb[second]
        print x
        if x == randomNumber:
            print "Sum Found!"
            break
        else:
            print "No Sum"

所以我的错误:

  • aa [first]不以1开始
  • 当大小应始终为8时,我的第二个数组会越来越小。因此,出现错误“ IndexError:列表索引超出范围”
  • 找到一笔钱就不会停止

任何帮助都会很棒

有一种非常简单的方法可以执行您想要的操作。 这是一行,因此您可以使用lambda函数定义它:

is_sum = lambda seq, x: any(x == y + z for yi, y in enumerate(seq) for zi, z in enumerate(seq) if zi != yi)

使用方法:

>>> is_sum([1, 2, 3, 4], 5)
True
>>> is_sum([1, 2, 3, 4], 6)
True
>>> is_sum([1, 2, 3, 4], 12)
False

暂无
暂无

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

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