首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不了解集合迭代是如何工作的,应为true,但返回false

不了解集合迭代是如何工作的,应为true,但返回false
EN

Stack Overflow用户
提问于 2021-08-14 06:23:46
回答 3查看 63关注 0票数 1

我正在运行下面的函数,但是为什么它返回False,7-3是4,而4存在于集合中,所以它应该返回true。

代码语言:javascript
运行
复制
from typing import List
def find_sum_of_two(A, val):
  B = set(A)
  print("B is : " + str(B))
  for i in B:
      
      if (val - i) in B:
          return True
      else:
          return False

print(find_sum_of_two([2, 1, 4, 7, 3],7))
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-14 06:27:50

如果您的条件不匹配,则在循环末尾返回False:

代码语言:javascript
运行
复制
def find_sum_of_two(A, val):
  B = set(A)
  print("B is : " + str(B))
  for i in B:
      if (val - i) in B:
          return True
  return False

print(find_sum_of_two([2, 1, 4, 7, 3],7))
票数 1
EN

Stack Overflow用户

发布于 2021-08-14 06:27:39

return returns一次,在第一次return之后,代码不再返回。

因此,尝试像这样缩进else

代码语言:javascript
运行
复制
from typing import List
def find_sum_of_two(A, val):
    lst = []
    B = set(A)
    print("B is : " + str(B))
    for i in B:          
        if (val - i) in B:
            return True
    else:
         return False

print(find_sum_of_two([2, 1, 4, 7, 3],7))

实际上,即使是现在也不需要else

代码语言:javascript
运行
复制
    for i in B:          
        if (val - i) in B:
            return True
    return False
票数 4
EN

Stack Overflow用户

发布于 2021-08-14 06:32:12

return标记函数的结束。一旦遇到return语句,python就认为函数已经结束。因此,return语句之后的所有语句都是不可达的。

在这种情况下,当执行return True时,函数已经结束。因此,不会执行else和其他return语句。

因此,利用return之后的任何语句都不会执行这一事实,您可以删除else部件

代码语言:javascript
运行
复制
for i in B:
    if (val - i) in B:
        return True
return False
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68780856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档