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的创建列表的方法,通常比循环和附录更好/更快。