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如何验证两个数字等于总和。难道不是只用每个循环检查一次吗?!
答案 0 :(得分:3)
正在检查sum_-n
的数字。如果是,则为number + n = sum_
。
答案 1 :(得分:1)
对于每次迭代,无论bool
- sum_
)是否在n
的集合中,都会生成numbers
。如果其中一个bool
为True
,则函数返回True
。否则,它会返回False
。
温和地说,这不是一个很好的算法。
考虑:
sum_in((3,), 6)
这将返回True
。为什么?因为6 - 3
位于numbers
。
所以是的,它只是在每次迭代中检查一个值。
祝你好运!