数据类型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 当用分片或合并操作时,之前是什么类型结果就得到什么类型;

浙公网安备 33010602011771号