无法返回列表中的值

时间:2018-09-15 16:35:22

标签: python python-3.6

我想返回列表的最终值new_list [3],但最后不返回任何值。我可以使用打印功能来获取new_list [3]的最终值。我对返回函数感到困惑。 2 for循环结束时是否可能返回new_list [times]?

original_list = [100,300,400,900,1500]

def filter_list(_list,times):

    L = len(_list)
    new_list = [list(_list) for k in range(times+1)]
    for k in range (0,times):
        for j in range (0,L):
            if j == 0: #exclude the term [j-1] because new_list[-1] is not exist
                new_list[k+1][j] = int(new_list[k][j]*0.2 + new_list[k][j+1]*0.5)
            elif j == L-1: #exclude the term [j+1] because new_list[L] is not exist
                new_list[k+1][j] = int(new_list[k][j-1]*0.4 + new_list[k][j]*0.2)
            else:
                new_list[k+1][j] = int(new_list[k][j-1]*0.4 + new_list[k][j]*0.2 + new_list[k][j+1]*0.5)
    return (new_list[times])

filter_list(original_list,3)

3 个答案:

答案 0 :(得分:1)

一个函数能够将一个值“返回”到调用它的作用域。如果未存储此变量或将其传递给另一个函数,则它将丢失。

例如:

def f(x):        返回x + 1    f(5)

将不会打印任何内容,因为对6调用返回的f(5)没有任何作用。

要输出从函数返回的值,我们可以将其传递给print()函数:

print(f(5))

或您的情况:

print(filter_list(original_list, 3))

答案 1 :(得分:1)

这是返回函数的作用:

return语句结束函数调用的执行,并将结果(即return关键字后面的表达式的值)“返回”给调用者。如果return语句不带表达式,则返回特殊值None。

答案 2 :(得分:0)

您要退货但未将其分配给任何东西

x = filter_list(original_list,3)

print(x)

在这种情况下,x会将您从函数调用返回的所有内容分配给变量,然后变量将保留您现在返回的所有内容

这里有一个简单的模型可以对此进行可视化

def something():
    x = 1
    return x

def something_print():
    x = 1
    return print(x)

a = something()
print(a)

something_print()
(xenial)vash@localhost:~/python/stack_overflow$ python3.7 fucntion_call.py 
1
1