课件内的优化代码并不能解决实际问题

课件内的优化代码并不能解决实际问题

def demo(x, list_1=[]):
    list_1 = [] # 将list_1置位空列表
    for i in range(x):
        list_1.append(i * i)

    print(list_1)

demo(3)
demo(4)

上述代码在函数体内把list_1置空,将导致list传参无效

例:

demo(3, [1, 2, 3])

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!优化代码中解决的问题是:不传第二个参数,即不传默认列表时,输入demo(3),demo(4)的结果分别是[0,1,4]和[0,1,4,9]。

https://img1.sycdn.imooc.com//climg/6433712e09000ea303130183.jpg

若想实现同学的要求,同学可参考如下代码:

https://img1.sycdn.imooc.com//climg/643372a6093a07af08480672.jpg

祝学习愉快~

  • Mr朱_ 提问者 #1

    https://img1.sycdn.imooc.com//climg/64337e3509714cfc02740258.jpg

    len(list_1)>0这个语句里面的list_1是传参,要如何判定list_1是传参还是原来内存的list_1呢?

    2023-04-10 11:15:48
  • 好帮手慕小猿 回复 提问者 Mr朱_ #2

    同学,你好!同学的判断要求没有意义,我们优化的就是第二次调用函数不传第二参数列表时,不在原list_1中继续添加元素,所以是不是原列表已经没有意义了。并且功能已经实现。即重新赋值新列表的方式

    2、传参列表时,使用传递的列表,和原来内存列表已经没有关系了。也不需要判断

    https://img1.sycdn.imooc.com//climg/6433a7b7096bb24403320038.jpg



    祝学习愉快~

    2023-04-10 14:12:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师