[英]How to return every value from my for loop while using formatting
我目前一直在尝试输出一些数据,希望有人能帮助我。
我做了一个小例子来说明我没有做的事情:
a = [5, 3, 8, 9]
def function_name(list):
number = 0
for i in list:
number = i + 5
return 'number = %d' % number
现在我的输出只有 'number = 14',而我正在尝试获取输出(彼此低于):'n = 10' 'n = 8' 等。
有没有可能这样做? 我意识到我正在覆盖我的数字变量,但我不知道如何做到这一点。
从函数返回多个值的传统方法是创建一个列表,将您的值附加到该列表中,并在循环后返回该列表。
a = [5, 3, 8, 9]
def function_name(list):
number = 0
results = []
for i in list:
number = i + 5
results.append('number = %d' % number)
return results
print(function_name(a))
这将为您提供输出['number = 10', 'number = 8', 'number = 13', 'number = 14']
。 如果您希望所有这些都在单独的行中,没有引号或括号,您可以使用str.join
将它们合并到一个由换行符分隔的列表中。
print("\n".join(function_name(a)))
...或者,将return results
替换为:
return "\n".join(results)
取决于在函数外部或内部执行此操作是否有意义。 两者都工作得很好,但根据函数的目的,一个在概念上更有意义。
也可以在不累积列表的情况下通过使用yield
而不是 return 来做到这一点。 yield
行为类似于return
,除了它可以在一个函数内多次执行而不终止它。 这会将函数变成一个生成器。 对我们来说幸运的是, str.join
乐意接受生成器作为参数。
a = [5, 3, 8, 9]
def function_name(list):
number = 0
for i in list:
number = i + 5
yield 'number = %d' % number
print("\n".join(function_name(a)))
您需要在循环内打印,如下所示:
def function_name(lst):
number = 0
for i in lst:
number = i + 5
print('number = %d' % number)
a = [5, 3, 8, 9]
function_name(a)
# number = 10
# number = 8
# number = 13
# number = 14
你所做的是在循环结束时从函数返回,所以你只剩下最后一个值。
return
,你可以这样做:
def function_name(lst): number, lis = 0, [] for i in lst: lis.append(i + 5) return lis a = [5, 3, 8, 9] for number in function_name(a): print('number = %d' % number)
好的,现在您将项目添加到循环中的列表并在最后返回列表。 在函数被调用的地方,我们遍历返回的列表并像以前那样显示。
使用当前的实现,您将返回 last_element,即9
,向其添加5
将返回14
要么遍历列表
a = [5, 3, 8, 9]
def add_5(element):
return element +5
for i in a:
print(add_5(i))
或者从函数返回整个列表
a = [5, 3, 8, 9]
def add_5_on_list(l):
res=[]
for i in l:
res.append(i+5)
return res
print(add_5_on_list(a))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.