数据类型3------核心数据类型注意事项


引用和拷贝的区别                                                       
  引用:
    1.赋值操作总是存储对象的引用
    2.赋值操作操作会产生相同对象的多个应用,因此在“原处修改可变对象”时可能会影响到其他地方,
      因此如果不想这样做时,就要明确使用拷贝来复制该对象。
   拷贝:
    1.方法:
      1.1 序列:“没有限制条件”的分片表达式(即a[:])
      1.2 字典:“字典”copy方法(D.copy())
      1.3 copy 标准库中可以生成完整拷贝(import copy copy.deepcopy(任意对象))

    2.浅拷贝和深拷贝
      2.1 浅拷贝(无条件分片和字典copy方法):只能做到顶层复制,即不能够复制嵌套的数据结构

      2.2 深拷贝(copy.deepcopy(任意对象)):可以完全复制一个对象包括它的嵌套(无论多少层嵌套)



==和is的区别:                                                     
  == 操作符测试值的相等性(值是否相等)
  ‘is’表达式测试对象的一致性(是否为同一地址的同一对象)


Python中的真和假:                                          
    1.数字如果非零,则为真
  2.其他对象如果非空,则为真
  3.None 为假;如果想预先分配一份100项的列表,可以用L=[None]*100





一些注意事项(习题):
  1.索引运算和分片运算:
    L[0,1,2,3]
    1.Python会缩放分片的限制值,以确定左边界永远比右边界小或相等
      比如(L[3:1]会缩放成L[3:3],L[-100:100]会缩放成L[0:4])
    2.分片的索引值时从元素左边算的;
      比如L[3:1]>>>[],L[3:1]=[?]>>>L[0,1,2,?,4]

    3.赋值一个空列表给一个偏移值,会将空列表对象保存在那里;
      赋值给一个空列表给一个分片,会删除该分片;
      例:L[0]=[]>>>L[[],1,2,3];L[0:1]=[]>>L[1,2,3]
    4.把一个元素赋值给列表会发生类型错误,应该把元素赋给序列内而不是序列本身;

  2.元组赋值运算:x,y =y,x # 左边不是元组,右边是元组,对应赋值(相当交换效果)
  3.变量名其实跟字典的键一样处理
  4.通用运算:
    4.1 '+' 运算符无法用在不同混合类型(比如1+'wf');
    4.2 '+' 不能用在字典
    4.3 当用分片或合并操作时,之前是什么类型结果就得到什么类型;

posted @ 2017-08-26 21:56  yangyongbo  阅读(97)  评论(0)    收藏  举报