首页 > 解决方案 > 如何在使用格式化时从我的 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'等。

有没有可能这样做?我意识到我正在覆盖我的数字变量,但我不知道该怎么做。

标签: python

解决方案


从函数返回多个值的常规方法是创建一个列表,将值附加到该列表中,并在循环后返回该列表。

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)))

推荐阅读