L25 Data Example

  • 这个主要讲了内置类型和方法,我只记录关键,混乱时再看
  • List的方法变换环境图
    • list.append(list2) <===> list + [list2]list.extend(list2) <===> list + list2
      • 前者是先创建一个元素框将参数视为一个元素赋值过去(可变浅拷贝、不可变深拷贝)
      • 后者是先创建相应大小元素框然后依次赋值(可变浅拷贝、不可变深拷贝),extend传入参数必须是可迭代对象
      • 上面是指操作近似等价的意思不是说两者的返回值一样,左侧都返回None,右侧返回修改后的list。更具体说,左侧就地改、右侧会创建新的
      • 上述两者都是就地修改原list,返回None。很傻的一点时,有时递归函数需要返回完成后的list,你直接return list.extend(list2)其实是返回的None不是list而导致出错
    • list的切片
      • 将切片赋值给变量(单独的切片实例) --- 先创建一个切片长度的新list实例,将原list相应位置的元素依次赋值过去(可变浅拷贝、不可变深拷贝)
      • 将变量(list)赋值给切片 --- 先将原list切片范围去除,并创建与变量同长度的元素框,再用变量依次赋值过去(可变浅拷贝、不可变深拷贝)
      • python的赋值操作
    • [list2] === list(list2)会创建一个list实例,它的首元素指向list2
    • 有关list的环境图可见example里的list_env

评论