leetcode吧 关注:1,116贴子:2,370
  • 9回复贴,共1

求助有关Python浅拷贝的问题

只看楼主收藏回复

leetcode189
最后一行为什么一定要用全切片nums[:]=…不能直接赋值nums=…呢?
不在class里定义method的情况下直接赋值然后print(nums)的输出是和期望输出一致的,但是一放到class的method里就必须全切片赋值,这是为什么呢?


IP属地:上海来自Android客户端1楼2023-03-28 12:29回复
    直接赋值的话,输出就是原本的nums没有发生变化


    IP属地:上海来自Android客户端2楼2023-03-28 12:32
    回复
      可变对象赋值只传引用


      IP属地:广西来自Android客户端3楼2023-03-28 19:03
      收起回复
        因为[:]是直接操作地址赋值,不加的话就只是对变量赋值,局部变量值的改变影响不到外部


        IP属地:湖南来自Android客户端4楼2023-03-28 19:04
        收起回复
          调用class.method(argv),在method内赋值argv不能影响method外的argv,只能利用list是可变的这个特性修改其内部的值


          IP属地:广西来自Android客户端5楼2023-03-28 21:37
          收起回复