现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
(1)浅复制 浅复制的话,通过id()函数查找复制前和复制后的
li = [1,2,3] print(id(li)) 输出:190679494 1256
#只能体现在列表 print(id(li2)) 输出:190679493 8824
li2 = li.copy()
print(li is li2)输出为false
print(li2) 打印全部li列表
通过观察:可知复制前和复制后的li和li2的id不同,(即li和li2指向计算机内部不是同一片空间),但li和li2相同。
如果改变li或者li2,不会影响另一个。
实质:没有改变元素在计算机中的位置,只能复制表层,比如:数。
目的:可以减少代码量,直接给出一个和li一样的列表,(在不改变给定的数据的前提下,自己进行改变)运行时间也可以减少(优化代码)
(2)要使用深复制,要先导入模块,python本身不具备深复制。
import copy 导入模块
copy.deepcopy
例如:
import copy
a = [1,2,3,4]
a2 = copy.deepcopy(a)
print(id(a))
print(id(a2))
print(a is a2)
#通过观察:可知复制前和复制后的a和a2的id不同,a和a2相同。
二者区别:
浅复制:拷贝了它的最外面的一层,嵌套列表,里面这一层指向的还是原来的内存地址
深复制:完完全全复制了一遍,和原来的列表没有关系。
见下:::
单层列表时:
li = [1,2,3]
import copy
li1 = copy.copy(li)
li2 = copy.deepcopy(li)
#########通过观察得:li和li1和li2三个列表完完全全一样;但是id查看的地址都不一样,所以如果在li后面append(5),浅复制和深复制的列表li1和li2都不变。
可见不是嵌套列表的话,深浅复制没有区别。所以引入嵌套列表:::
例子:::
li = [[1,2],[3,4]]
li2 = li #li2复制
li3 = copy.copy(li) #li3是浅复制
li4 = copy.deepcopy(li) #li4是深复制
#########此时li,li2,li3,li4全都是一样的,都为 [[1,2],[3,4]]
id(li) 输出为2011597308424
id(li2) 输出为2011597308424
id(li3) 输出为2011597308360
id(li4) 输出为2011598772872
#########此时复制的li2和原列表li的id是一样的,深复制和浅复制的id和原列表的id都不同
#########如果现在在原列表最后面加一个数字,四个列表的id都不会改变
#########所以我们换个思路:::
#########注意这是个嵌套列表
id(li[0]) 输出为: 2011597305032
id(li2[0]) 输出为: 2011597305032
id(li3[0]) 输出为: 2011597305032
id(li4[0]) 输出为: 2011598772936
#########嵌套列表中,浅复制指向的是原来的地方,而深复制指向的不是原来的地方
#########在嵌套列表中,浅复制指向的是原来的内存地址,深复制指向的是新的内存空间地址
#########如果不是嵌套列表,深浅复制指向的都是新的空间
#########深浅复制要注意:嵌套列表和不是嵌套列表的情况
#########内存空间一样,添加元素,这个才会添加,如果内存空间地址不一样,你添加和我无关
#########在原列表的第一层嵌套里面添加一个元素,分析:::
li[0].append(5)
#########li和li2,li3都会添加,因为内存空间地址一样;但是li4不会添加,因为内存空间都不一样了!!!
下面这种嵌套列表和上面一个意思,两者说的最外面一层等的都是指的一个意思。
li = [1,2,3,4,[5,6,[7,8]]] 列表li总共有三层嵌套。
[1,2,3,4] : 第一层嵌套(即最外层)
[5,6] : 第二层嵌套
[7,8] : 第三层嵌套
一、完全浅复制(就是复制):当一个列表复制给另外一个列表,他们其实在内存中指向的是同一个列表,即是内存id相同。
当另一个列表不管修改嵌套的哪一层列表,另一个列表也会跟着相应的被修改。但是这两个列表的id一直不会变。
二、当一个列表通过函数copy浅复制给另外一个列表,其实他们在内存中只有最外面一层被完全深度复制,其他层属于浅复制。即是内存id复制了其中一部分,id另一部分重新生成了。
当其中一个列表只修改最外层(指最外层嵌套,即第一层),另一个列表的最外层不变;如果其中一个列表修改了除最外面一层的其他层,则另一个列表除最外面一层的其他层也被修改。
三、当一个列表通过函数deepcopy()深度复制给另外一个列表,他们其实他们在内存中指向的是完全不同的列表。
最后
Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
👉Python所有方向的学习路线👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python必备开发工具👈
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
👉Python全套学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
👉实战案例👈
学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。
因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。
👉大厂面试真题👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!