【问题标题】:Return after for loop在 for 循环后返回
【发布时间】:2020-05-14 08:25:47
【问题描述】:

我正在编写一个函数,它接受一个列表并检查它是否包含 12。我不明白为什么如果我有两个这样的 return 语句,该函数不起作用。

def check_12(lst):
    for i in lst:
        if i == 12:
            return True
        else:
            return False

test = [1,2,3,12]
print(check_12(test))

它应该返回 True,但返回 False。

【问题讨论】:

  • 在循环的第一次迭代中,i = 1,您的 if 条件i == 12 为 False,因此,我们遵循 else 条件,即返回 False。

标签: python for-loop


【解决方案1】:

您返回得太早,因此只检查第一个元素是否为12

def check_12(lst):
    for i in lst:
        if i == 12:
            return True
    return False

请注意,您只有在循环结束后才知道搜索到的元素不在其中。这个确切的模式有一个 util (any):

def check_12(lst):
    return any(i == 12 for i in lst)

当然,在这种特殊情况下,还有一种更快的方法可以实现:

def check_12(lst):
    return 12 in lst

【讨论】:

  • 这是一个很好的解释!但是,当我们遍历列表中的每个项目时,没有项目等于 12,为什么我们不能在 for 循环中的 Else 语句中返回 False?
  • return 会立即结束函数。你总是会从第一次迭代中返回并且永远不会完成循环。
【解决方案2】:

您需要在遍历整个列表后返回 False,而不是在第一次迭代期间(因此删除“else”语句并将其向左移动一个选项卡)。

def check_12(lst):
    for i in lst:
        if i == 12:
            return True
    return False

test = [1,2,3,12]
print(check_12(test))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-25
    • 2021-08-14
    • 2021-04-24
    • 2015-12-30
    • 2018-06-10
    • 2016-08-23
    • 2013-01-18
    • 2017-10-13
    相关资源
    最近更新 更多