python - 如何在使用格式化时从我的 for 循环中返回每个值
问题描述
我目前一直在尝试输出一些数据,希望有人可以帮助我。
我做了一个小例子来说明我没有做的事情:
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
而不是返回来执行此操作。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)))
推荐阅读
- c++ - 如何制作一个函数来添加遵守特定规则的所有边
- python - 如何从openpyxl中的URL将图像大小调整为自定义尺寸?
- salesforce-communities - 我需要从中删除重复项...我如何修改它以实现无重复数组?
- linux - geeko@buildhost 在 linux 版本中表示什么?
- reactjs - 为什么 React Router 开关总是显示第一个组件?
- flutter - Flutter Web:创建具有移动应用大小的 UI
- reporting-services - 一个参数值依赖于报表中的另一个参数
- javascript - 如何将流星应用程序作为流星服务器与 GraphQL 和 ReactJS 前端分开运行?
- javascript - -0 值的角货币管道
- c# - 在水晶报表中显示正、负和零值的字符串