繁体   English   中英

如何在使用格式时从我的 for 循环中返回每个值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM