Python循环不移动,内部带有if语句

Python循环不移动,内部带有if语句,python,Python,为什么我调用函数时这个循环没有移动?。当我调用getnumber([2,3,“no”,“rain”,5,0])时,它只返回[2]。谢谢大家的帮助 def getnumber(a): for x in a: if type(x)==int: return [x] 因为你一找到第一个结果就给return打了电话。如果用['a',3]调用get_number,它将返回3 如果您想要构建一个包含所有数字的列表,那么您需要做的是将它们放在一个列表中,并在最

为什么我调用函数时这个循环没有移动?。当我调用
getnumber([2,3,“no”,“rain”,5,0])
时,它只返回
[2]
。谢谢大家的帮助

def getnumber(a):
    for x in a:
        if type(x)==int:
            return [x]

因为你一找到第一个结果就给return打了电话。如果用['a',3]调用get_number,它将返回3

如果您想要构建一个包含所有数字的列表,那么您需要做的是将它们放在一个列表中,并在最后返回它们

def getnumber(a):
    r = []
    for x in a:
        if type(x)==int:
            r.append(x)

    return r
这也可以简化为列表理解,如下所示:

def get_number(a)
   return [ value for value in a if type(value) == int ] 

因为您正在中断循环,并告诉它在循环遇到类型为
int
的项时返回,该项恰好是2。。。期望的行为是什么?您想要所有的整数吗?显然,您希望函数返回多个值-或者您需要在执行
return
语句之前收集结果,或者您应该编写一个生成器并使用
yield
而不是
return
,这样您就可以迭代生成器的结果了。@bryan60是的,我正试图从列表中获取所有数字,谢谢!但是,为什么这一步(r=[]&r.append(x))不需要用简化版本编写呢?请看一看,这是一种非常类似python的创建列表的方法,通常比循环和附录更好/更快。