巧妙处理 return 遇上 for 循环

函数中怎么在 for 循环后 返回列表的全部元素?
什么?有点晕,那就举例看看

我们先看一个简单的 for 循环的栗子:

for i in range(1,6):
print(i)

–>输出结果:
1
2
3
4
5
我们的需求是:返回 i 的全部元素

我们现在把这个循环放在函数中,我们直接调用函数看看。

def brucepk():
for i in range(1,6):
return i

j=brucepk()
print(j)
这样当被调用时,会不会返回全部元素呢?我们看下结果:

–> 1
结果等于 1 ,为啥?因为 for 循环一旦遇到 return 就会马上终止循环,当 i 第一次循环到 1 时遇到了 return 就马上停止并返回了,所以调用时函数返回的 i 就是第一次循环的 1 值。

那我要返回全部的元素怎么做呢?放在 for 循环外是不是可行呢?我们来看看:

def brucepk():
for i in range(1,6):
pass
return i

j=brucepk()
print(j)
这里不对 for 循环做处理,直接用 pass,pass不做任何事情,只起到占位的作用。
调用结果如下:

–> 5
放在循环体之外,等循环完了再赋值,循环到 5 ,循环结束,所以返回给调用者就是 5,这样还是没有达到我们的需求。

解决方法
我们在循环还未开始时新建一个空的 list 对象,在 for 循环中用 append 把全部元素加到空 list 对象中并返回添加后的 list 对象。

def brucepk():
k=[]
for i in range(1,6):
k.append(i)
return k

j=brucepk()
print(j)
这样就可以把 i 的全部元素以列表的形式返回了。

#输出结果:
[1, 2, 3, 4, 5]

发布了41 篇原创文章 · 获赞 7 · 访问量 3669

猜你喜欢

转载自blog.csdn.net/weixin_43091087/article/details/105072175
今日推荐