洗礼灵魂,修炼python(16)--列表进阶话题—>上节作业讲解+copy模块,浅拷贝,深拷贝
上节课后作业:
1.使用列表解析输出结果:[(0,0),(0,2),(2,0),(2,2)]
方法1:
方法2:
方法3:
2.使用列表生成器打印斐波那契数列
3.使用列表解析生成列表[1x2,3x4,5x6,7x8,…,99x100]
4.利用3层for循环的列表生成式,找出对称的3位数,例如:121等从左到右从又到左还是原来的对称数
5.编写一个函数,它接受一个list,然后把list中的所有字符串变成大写后返回,非字符串元素将被忽略
如果按照平常写法是这样:
按照列表解析就简单很多:
注意,此时并没有对原列表更改
copy模块:
1.什么是copy
前面在列表分片的时候稍微提了一下关于拷贝(复制),在这一章将详细介绍关于拷贝的copy模块
2.作用
做数据备份,稍微了解运维的都应该听过完全备份和增量备份吧?其实这里就使用了拷贝,所以在实际运用中,拷贝是很常用的
3.函数(方法):
看到这些方法,其实相比于前面的,其实并不多对吧?忽略带有特殊功能的方法,其实也就几个对吧?
然而这个模块最常用的就是copy和deepcopy方法,其他基本很少用,所以直接略过
copy:这个方法就是简单意义上的拷贝,和常识里的拷贝差不多,它又另一个名称叫【浅拷贝】(或者浅复制),换句话就是对父类对象引用的拷贝
例:
deepcopy:这个方法就厉害了,这个比浅拷贝更牛一点,被叫做深拷贝(或深复制),换句话就是对对象的资源的拷贝
(如果看这个图解让你更费解,那么忽略即可,前面的文字说明我想已经够清楚了)
总结:
浅拷贝就是对原对象最外层的复制,如果有内层则是直接的引用
深拷贝是对原对象整个参数资源的复制,不管有内层与否,已经和原对象毫无关系
拷贝对于字符串和整形数与字典和列表的处理是不同的
其实是不是很简单?那么如果你还没懂,自己多练习