今天买了一本书:《Python编程从入门到实践》,知乎上挺多人推荐的。之所以在看小甲鱼的教程之外还是买了一本书是出于两个目的:
1、希望巩固学到的知识:
每天两节课,速度说快不快,说慢也还不算太慢。但是如果有从前几章就看我blog的人应该发现,我已经开始不做动手作业了。原因很简单,有些题是单纯的超纲。有些题是脑子转不过来(我还是认为超纲的比较多)。
同时在课程中将的不那么明白的点,往往都是自己试验得出结论,效率也有点低。知识结构体系不太稳固,所以也想通过阅读书籍的方式,稳固知识体系。
2、希望能做一些有意思的项目:
小甲鱼的作业是真的作业,没啥意思。就跟做数学题一样,每次的作业都是“请用课上学到的知识做一个程序,判断一个水仙数/做一个杨辉三角模拟/判断一个数字是不是回行数”。弄的我每天感觉自己是在上数学课,写的也是数学作业,而不是在学编程。
所以,还是想接触一下可能会比较有意思的项目。
今天稍微翻了前几章,发现这本书对于真的什么都不懂的纯小白还是有门槛的。这里就非常感谢小甲鱼帮忙打了一个小基础,起码知道这本书的作者的一些术语是在说啥了。
好了,废话不多说,说说今天的课程吧。
今天学的两门课都比较简单(上课都觉得简单,一做作业就发现自己崩盘)。
一、深拷贝
之前的笔记里已经写了拷贝,但那个拷贝叫“浅拷贝”。是用于拷贝外层列表的,二对二维列表就不是那么好用了。
而深拷贝,就是将外层列表和内层列表一起放到一个新列表里去。原列表怎么修改,都不会影响新列表里的数据。
woman=[["刘亦菲","迪丽热巴"],["范冰冰","古力娜扎"],["佟丽娅"]]
#深拷贝#
import copy #调用copy模块
beautiful_woman = woman.copy() #.copy为浅拷贝,仅拷贝了最外层的列表,而内层列表一致。即如修改woman二层列表里的元素,beautiful_woman里的数值也会跟着改变。
beautiful_woman = woman.deepcopy()#deepcopy为深拷贝,连带内层列表也被拷贝。
二、列表推导式
这个就比较厉害了,简单来说就是通过推导式来获取或修改列表里的内容。
#列表推导式#适用于列表内为纯数字情况下
#若想把列表里的数字变更为原列表里的两倍
#循环法:
wangdachui = [180,140,16]
for i in range(len(wangdachui)):
wangdachui[i]=wangdachui[i]*2
#推导式法
wangdachui = [180,140,16]
wangdachui = [i * 2 for i in wangdachui] #通过此推导式可以对列表内的数据进行修改及计算。#i*2为表达式,for...in为循环。此处为每一个列表内数字循环,都会经过i*2,并覆盖至wangdachui这个列表内。wangdachui当前列表内数据为[360, 280, 32]
#转换为Unicode编码保存
code = [ord(c) for c in "FishC"] #将结果['F', 'i', 's', 'h', 'C'],转化为Unicode编码,结果为[70, 105, 115, 104, 67]。
#提取二维列表里的数字
wangdachui = [[180,140,16],
[1,2,3],
[4,5,6]]
wangdachui = [wangdachui[1] for wangdachui in wangdachui] #[wangdachui[1](提取每一组列表里的第二个元素) for wangdachui(每次循环被定义为三个内层列表里每一组的元素) in wangdachui (#wangdachui列表里有三个内层列表,所以循环三次,每次吐出一个内层列表里的数值)]结果为[140,2,5]
列表推导式因为搭配上了循环,所以理解起来比较麻烦,属于圆环套圆环系列。层层嵌套之下,很容易迷糊。
我自己的做法就是经常创建点简单的列表,不停做试验来解惑。上面的笔记很多就是这么来的,也有部分是课堂上的记录。
Python之路,到目前为止,还是一只脚在门外,一只脚在门里。希望自己能赶紧入门吧。
胭惜雨
2020年12月26日