谁能向我解释为什么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?的主要内容,如果未能解决你的问题,请参考以下文章