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

时间:2018-11-06 18:20:16

标签: python

我目前坚持尝试输出一些数据,希望有人能帮助我。

我做了一个小例子来说明我做不到的事情:

C_REQUESTS_COMPLETE

现在,当我尝试获取输出(彼此之间)时,我的输出仅为'number = 14':'n = 10''n = 8'等。

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您需要像这样在循环内进行打印:

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)

好的,现在您将项目添加到循环中的列表中,并在末尾返回列表。在调用该函数的位置,我们遍历返回的列表并像以前一样显示。

答案 2 :(得分:0)

在当前实现中,您将返回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))