【问题标题】:How to return a complete for Loop in a function如何在函数中返回完整的for循环
【发布时间】:2019-09-29 20:39:56
【问题描述】:

我正在尝试在函数中运行For loop,但是当我调用该函数时,只返回第一个值。

我尝试用print 而不是return 结束循环,这会得到正确的结果(它会打印循环中的每个值)但意味着none 会添加到答案中,因为有现在是双重打印。

请注意:在这些示例中,可以直接打印“值”,但我希望能够通过 for 循环运行,以便稍后增加复杂性。

return结尾的函数只打印出`For循环`的第一个值

def thing():  
   value = ( 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 )
   for x in value:
    return x

print(thing())
# 1 

此函数使用print 并给出正确结果,但由于重复打印而添加了none

def thing1():
   value = ( 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 )
   for x in value:
     print(x)

print(thing1())

>>>  OutPut:
1
2
3
4
5
6
7
8
9
10
None

如何在删除“无”的同时获得第二个结果(所有值的完整打印循环)?

【问题讨论】:

  • return 退出函数。如果你想返回完整的序列,那么只需return value - 不需要循环。
  • 您看到的None 不是由thing1() 函数打印的。您的 thing1() 打印出您想要的内容。 None 可能来自代码中的其他显示。
  • @RobinZigmond 这是真的,但我希望它在循环中运行(即能够像 if 语句一样添加更多复杂性)
  • @AlexandreB。如果它不是一个功能,那就是这种情况。这可以在这里解释:stackoverflow.com/questions/7053652/…
  • @X-cessivePupil 谢谢你的链接!

标签: python function for-loop return nonetype


【解决方案1】:

return 运行后,函数停止计算。如果您想在 for 循环中返回所有内容,请返回其输出列表:

ret_vals = []
for x in value:
    ret_vals.append(x)

return(ret_vals)    

您可以像这样指定在新行上打印它们:

out = func()
for x in out:
    print(x)

【讨论】:

    猜你喜欢
    • 2020-08-21
    • 2019-02-08
    • 2019-06-02
    • 2021-05-23
    • 2015-08-08
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多