知识点列表:
- python基础数据类型
- 变量和表达式
- if , elif , else , continue , break流程控制
- for , while循环控制
- 字符串操作
- list , tuple , set , dictionary 容器操作 (重点)
- 文件读/写
- 面向对象
- 切片的使用,字符串,list都可以用
- 高阶函数的使用:
a. map
b. reduce
c. filter
d. sorted
e. lambda
f. zip
g. eval
本周主要是学习python基础知识,能熟练运用python,对于我这种没有python基础的iOS程序员来说,压力确实挺大的,毕竟要一周内从不会到能代码。但是我不怕,因为这次是下决心来学习人工智能,就算困难也要克服。
由于之前有学习iOS和android的经历,所以非常明白学习好python基础知识的重要性,就像是练功夫要先扎马步一样,只有python的基础知识学习牢固了,后面做爬虫,机器学习才有底气。所以这一周严格按照课程安排学习python的基础知识,虽然群里有同学学的很好,都在看微积分,线性代数等等一些高级的知识,但是我没有因此改变我的节奏,继续稳扎稳打的学习。
其实最大的挑战就是合理安排好时间,为此,我搬到了地铁站附近,上班时间比以前每天节省了1个小时左右,而且地铁也不用换乘,在地铁上有60%-80%的时间也是可以听课和做练习的,每天晚上8点到10点上课,这个时间段必须抽出来,为此一些聚会,饭局全部推掉,早上5点40起床,骑自行车锻炼身体,买早餐,7点上班,从家到地铁站和从地铁站到公司的路程全部骑自行车,保证每天8公里左右的运动时间。工作时间高效的完成工作,珍惜每一分钟的时间,减少喝水的次数和杂事的数量,专注完成每天的工作,以保证充分的学习时间。
周末要赶火车参加线下课,今天是第一次线下课,收获非常大,有了互动,自己也问了寒老师问题,得到答案并明白了问题的本质原因,之后的每一次课都要坚持来。当然有的同学也说了成本问题,来回的火车票加酒店的钱,3个月下来,比总共的学费都要贵,但是我认为是值得的,换个角度想“ 假如我从事人工智能的工作3年后年薪达到了500万,那么还会觉得现在这些火车票和酒店钱贵吗? ”所以我从来没有动摇过。
下面详细整理一下学习笔记:
- python基础数据类型:
a. 整形int
b. 浮点型float
c. 数据类型强制转换
d. 四则运算
e. 字符串
f. bool
g. 可以用 type ( x ) 查看x的类型 - x = 12 x是一个变量,python中声明变量的时候不需要指定变量的类型,跟iOS不同
a. x ** 2 表示x的平方, x ** 3表示x的3次方 x += 1 相当于 x = x + 1
b. python中没有 i ++ 可以用x += 1表示 - if 后必须跟一个返回bool值的表达式
a. if else 后必须跟冒号,python中没有else if 可以用elif代替
b. 简单的for循环 for name in names:
c. range用法
i. range(1,10) 会输出 1到9
ii. range(1,20,5) 会输出 5,10,15 最后面那个5是指每隔5个输出一次,如果不设置,默认为1
d. enumerate用法
i. 会把数组转化为带编号的的list
ii. 用for取出编号和值 for i,name in enumerate(names):
e. 列表推导式
i. ["stupid"+name for name in names]
ii. 上面的列表推导式会生成一个list,里面每个元素都会在原来的基础上加上stupid
iii. 列表推导式分为两个部分 for前面的,和for后面的 - while循环:
a. while后面跟的表达式要返回true,才会执行while里面的代码,也是加上冒号。
b. while中可以配合break和continue使用比如
c. i = 0
d. while true:
i. print(i)
ii. i += 1
iii. if i >= 10:
1. break
e. 执行上面的代码,与奥break的时候就会跳出while - string字符串操作:
a. 双引号和单引号都可以 “sqc”'sqc'
b. 但是双引号里的字符串再用引号要用单引号,单引号里用双引号,要成对出现
c. 输出多行字符串,用''' ''' 或 """ """ 三个双引号单引号给括起来例如
i. ''' sqc
ii. facebook
iii. google '''
d. \n 换行符 \t tab键
e. 字符串拼接要用 + 加号例如
i. "hello" + " " + "world"
f. w[0] 会输出字符串的第一个字符
g. w[-1] 会输出字符串的最后一个字符
h. python中索引是有负数的,表示倒着数, -1就是倒数第一个
i. 切片:
i. w[1:3] 表示把字符串索引为1切到索引为3,注意,包含1,但不包含3
ii. w[:3]表示从0开始切
iii. w[:100000]表示切到最后一个,100000超过索引即取最后一个
j. w.upper()字串变为大写(注意这样不会把原来的字符串变为大写,而是生成一个新的字符串,如果要用就拿一个变量去接收)
k. w.lower()变为小写
l. w.capitalize() 首字母变为大写
m. w.strip()去掉两边的空格
n. w.lstrip()去掉左边的空格
o. w.rstrip()去掉右边的空格
p. w.split() 默认按空格拆分为一个list 也可以指定字符 w.split(',') 这样就是按逗号拆分
q. w.find('a')找到a出现的位置
r. w.replace(',' , '|') 把所有的逗号都替换成 | - list : names = ["sqc", "facebook", "google"] 列表
a. list也可以用切片
b. names[1:3] 从索引为1切到索引为3
c. list("facebook") 把一个字符串的每一个字母强制转化为list
d. names.append('book') 在list的末尾添加一个元素
e. names + namestwo 可以生成一个新的list
f. 'sqc' in names 判断一个元素是否在list里面
g. names.insert(3 , 'me')在索引三的位置上添加一个元素
h. names.pop() 返回list中最后一个元素,并且在names中删除最后一个元素
i. names.count('sqc') sqc在list中出现了几次
j. names.reverse() 把list倒序
k. del names(3) 删除索引为3的那个元素,注意用del关键字删除 - set : 集合,无序,每一个元素不重复
a. new_set = set()
b. 用来把list中的元素去重复 :
i. a = list('sqcsqc')
ii. s = set(a)
iii. new_a = list(s)
iv. 这样就完成了list去重复的操作 - tuple : 很像list,区别是不可变,不能添加和修改
- dictionary : 里面都是key value parts
a. fruit['apple'] 取出apple对应的那个值
b. fruit.keys() 取出所有的key
c. fruit.values() 取出所有的value - function:
a. function 的构成: def 关键字,加方法名 ,加小括号, 加冒号
b. 小括号里可以加一个参数或多个参数,也可以不加参数
c. def add(x,y):
d. 如果是不定长度的参数,可以用星号代替 def add (args): (args 的类型会是一个tuple)
e. 可以把list当作是一个参数传过去 例如:
i. r = [2,5]
ii. add(r)
iii. 这样的话,2和5就自动对应到x,y上了 - 面向对象:这部分理解还算好,因为OC也是面向对象语言,所以学历起来比较好
a. 每个成员方法中的第一个参数一定是self - 迭代器 :iterator
a. x = iter([1,2,3,4])
b. print(next(x))
c. print(next(x))
d. print(next(x))
e. 这样会输出1,2,3, next的方法会一直执行下一个元素, 超过list的个数时就会报错 - 生成器 : generator
a. yield 关键字 , 相当于有一个游标,当指向这个游标的时候再取值,类似c语言的指针 - 文件读写:
a. csv文件I/O
b. 打开一个文件 in_file = open("data/sample.csv","r") "r" 是读权限
c. 读取数据 csv_reader = csv.reader(in_file)
d. in_file.close() 用完记得关上
e. 把数据写入文件: out_file = open("output.csv","w") "w" 是写权限
i. out_writer = csv.writer(out_file)
ii. out_writer.writerow(["sqc","google","facebook"])
iii. out_file.close()
网友评论