从 Python 中的函数返回布尔值时出现意外结果

Unexpected result when returning a boolean from a function in Python

我正在尝试编写一个 Pyhon 函数来检查列表是否包含给定的索引号。

def ncheck(n, list):
    for x in range(len(list)):
        if n == x:
            return True
        else:
            return False

我用以下参数测试了代码:

print(ncheck(6, [0, 1, 2, 3]))
print(ncheck(2, [0, 1, 2, 3]))

我期待第一个 运行 return False 因为它正在寻找具有 4 个元素的列表中的索引 6 和第二个 运行 return True 因为它正在寻找索引 2。实际发生的是两次运行 return False。我认为可能在 if 块内有 return 导致了问题,所以我尝试在 if 块内分配另一个变量“answer”并 returning 这个变量作为函数的结束语句但是得到了同样的结果:

def ncheck(n, list):
    for x in range(len(list)):
        if n == x:
            answer = True
        else:
            answer = False
    return answer

print(ncheck(6, [0, 1, 2, 3]))
print(ncheck(2, [0, 1, 2, 3]))

False
False

我很茫然。不仅仅是解决此问题的替代方法,我想了解为什么此方法具体不起作用。

您的代码目前仅检查 第一个 号码,您的 else 旨在 运行 if all数字不匹配:

def ncheck(n, list):
    for x in range(len(list)):
        if n == x:
            return True
    return False # after exiting the for loop

print(ncheck(6, [0, 1, 2, 3]))
print(ncheck(2, [0, 1, 2, 3]))

Returns

False
True

此外,请注意 range 实际上能够作为 O(1) 操作执行此操作,因此执行此操作的首选方法(与 list 的长度无关)是:

def ncheck(n, list):
    return n in range(len(list))

您可以查看了解更多详情。