作者:无言的歌slp_630 | 来源:互联网 | 2022-12-06 14:45
我想知道函数是否可以返回一个循环?
我的代码如下:
def looping():
a = [25,50,75,100, 200, 300]
for x in a:
return x
print(looping())
当我打印它时它返回:
输出:
[25]
预期产量:
25
50
75
100
200
300
这可能吗?
1> abarnert..:
首先,您现有代码的问题是,一旦您return
,该功能结束.所以,你只需返回第一个值即可.
函数不能返回循环,因为循环不是一种值.
函数可以返回一个iterable,这是一个可以循环的值.有几种方法可以做到这一点:
yield
在大多数其他答案中,您可以使用函数生成函数,因此它会返回所有事物的迭代器yield
.
但是yield
在循环内部只是一种笨拙的做法yield from
,所以真的,你应该这样做:
def looping():
a = [25, 50, 75, 100, 200, 300]
yield from a
for x in looping():
print(x)
您可以直接返回迭代器:
def looping():
a = [25, 50, 75, 100, 200, 300]
return iter(a)
for x in looping():
print(x)
或者,最简单的是:序列(如列表)与迭代器一样可迭代.所以,如果你有一个列表,只需返回它:
def looping():
a = [25, 50, 75, 100, 200, 300]
return a
for x in looping():
print(x)
虽然我们在这里,你甚至不需要一个明确的循环.你可以调用一个隐藏循环内部的函数,例如join
:
print('\n'.join(looping()))
或者您甚至可以将迭代直接映射到print
:
print(*looping(), sep='\n')
虽然在这种情况下,我认为循环是完全合理的,所以如果你对它感到满意,坚持下去.