for循环后返回

时间:2020-05-14 08:25:47

标签: python for-loop

我正在编写一个接受列表的函数,并检查它是否包含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。

2 个答案:

答案 0 :(得分:1)

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

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

请注意,您仅在之后知道循环完成之后,搜索到的元素不在其中。有一个实用工具(any)用于此确切模式:

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

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

def check_12(lst):
    return 12 in lst

答案 1 :(得分:0)

遍历整个列表后,而不是在第一次迭代中,您需要返回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))