为什么'Return'只检查列表中的第一个元素?

时间:2014-08-08 17:22:02

标签: python

一个非常简单的代码示例,用于解决“返回”的难度。 让我们假设我有一个列表,目的是验证一个元素是否在列表中。

lst = [1, 2, 10, 50, 100, 500]

一个功能可以是:

def(number, x):   #The first parameter stands for the number I want to search. 
  for i in range(0, len(x), 1):
        if (x[i] == number):
            return True
        else:
            return False

我不知道/了解'返回'关键词?

如果我替换' number'用2,它将返回False。基本上,有人可以解释为什么这个函数只检查列表中的第一个元素,好吗?

3 个答案:

答案 0 :(得分:2)

当函数返回时,它会停止执行任何代码并返回返回的值。这会导致循环只通过列表中的第一项,因为函数无论如何返回。因此,您应该只在循环完成后返回:

def(number, x):
    for i in range(0, len(x), 1):
        if (x[i] == number):
            return True
    return False

但是,我建议改为使用in

>>> 2 in [1, 2, 10, 50, 100, 500]
True

答案 1 :(得分:1)

你可以迭代x,你不需要范围:

def check(number, x):  #The first parameter stands for the number I want to search.
    for i in x:
        if i == number:
            return True      
    return False # outside the loop, will return False if the number is not equal to any number in x

或简单使用:

In [4]: lst = [1, 2, 10, 50, 100, 500]

In [5]:  2 in lst
Out[5]: True

def check(number, x):  #The first parameter stands for the number I want to search.
    return number in x
In [23]: check(2,lst)
Out[23]: True

答案 2 :(得分:0)

试试这个:

def(number, x):
  for i in range(0, len(x), 1):
    if (x[i] == number):
        return True
  return False
小心,return停止并离开整个功能