谁能向我解释为什么b_list不打印c_list?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谁能向我解释为什么b_list不打印c_list?相关的知识,希望对你有一定的参考价值。

def function_b(b_list, high_num):
    c_list = [0,0,0,0,0,0,0]
    i = 0
    for num in b_list:
        if num> high_num:
            c_list[i] = num
        i = i +1
    b_list = c_list
def main():
    b_list=[1,3,6,4,1,2,8]
    high_num=4
    function_b(b_list, high_num)
    print(b_list)
main()

任何人都可以解释为什么不打印[0,0,6,0,0,0,8]吗?我认为,由于列表是可变对象,因此如果我们在function_b中分配参数b_list =c_list,它将更改main中找到的b_list。为什么这对我们插入到function_b的参数b_list没有影响?

答案

使用全局变量,像这样:

def function_b(high_num):
    global b_list
    c_list = [0,0,0,0,0,0,0]
    i = 0
    for num in b_list:
        if num> high_num:
            c_list[i] = num
        i = i +1
    b_list = c_list
def main():
    global b_list
    b_list=[1,3,6,4,1,2,8]
    high_num=4
    function_b(high_num)
    print(b_list)
main()

或使用返回值:

def function_b(b_list, high_num):
    c_list = [0,0,0,0,0,0,0]
    i = 0
    for num in b_list:
        if num> high_num:
            c_list[i] = num
        i = i +1
    return c_list
def main():
    b_list=[1,3,6,4,1,2,8]
    high_num=4
    b_list = function_b(b_list, high_num)
    print(b_list)
main()

以上是关于谁能向我解释为什么b_list不打印c_list?的主要内容,如果未能解决你的问题,请参考以下文章

谁能向我解释 CreatedAtRoute() 吗?

谁能向我解释这段代码?

谁能向我解释以下代码中的 java continue 语句执行?

输入“任何?”没有下标成员[重复]

got未写入软件包数据

使用typedef的用途是什么,它表示什么?