这个算法是如何工作的?!有人可以向我解释一下......明天接受采访

时间:2012-01-31 08:40:58

标签: python

def sum_in(numbers, sum_):
    """whether any two numbers from `numbers` form `sum_`."""
    return any((sum_-n) in numbers for n in numbers)

它基本上采用一个列表,并检查它中的任何两个数字是否形成等于sum_的总和。我似乎无法得到sum_-n如何验证两个数字等于总和。难道不是只用每个循环检查一次吗?!

2 个答案:

答案 0 :(得分:3)

正在检查sum_-n的数字。如果是,则为number + n = sum_

答案 1 :(得分:1)

对于每次迭代,无论bool - sum_)是否在n的集合中,都会生成numbers。如果其中一个boolTrue,则函数返回True。否则,它会返回False

温和地说,这不是一个很好的算法。

考虑:

sum_in((3,), 6)

这将返回True。为什么?因为6 - 3位于numbers

所以是的,它只是在每次迭代中检查一个值

祝你好运!