在这里做笔记录下课程中,对我有用的一些知识点,先按照时间顺序这么记下来,有空了再做个整理吧
小技巧
所有使用pip安装某程序的命令,后面加-i https://pypi.doubanio.com/simple/ 下载速度更快,其中这个地址是国内镜像网站的地址,可以替换成其他镜像网站
缩进
表示程序的格式框架,表达了包含和层次关系
注释
以#号开头的单行注释,或以’’’和’’’包含的多行注释
变量命名
字母、数字、下划线和中文组合;首字符不能是数字、名字不能与保留字相同
python保留字
字符串
双引号和单引号都一样
字符串序号体系:有正向0开始和反向-1开始
字符串切片:[0:3],从0个开始,不到第3个
输入:input(“提示信息”)
输出:print(“sss”),格式化输出print(“dd{:.2f}d”.format(c)),大括号会被替换
评估函数
eval() 把参数中的最外侧引号去掉
数据类型
浮点数:
存在范围限制,取值范围-10307到10308,经度到10-16,因此可以忽略;
一般在16位上,开始可能存在不确定尾数,使用round(x,d)函数进行四舍五入后再比较大小
Round(x,d) d是小数截取位数
复数类型:
J = 更号下-1
复数类型分为实部和虚部
z.real 获取实部
z.imag 获取虚部
运算符
/号:返回浮点数结果;//号,返回整除结果
** 号:幂运算,x**y
不同类型混合运算,结果为最宽的类型,整数<浮点<复数
运算函数
abs() 求绝对值
divmod(x,y) 商余 ,同时求x/y的商和余,输出(商,余)
pow(x,y[,z]) x**y%z ,z可省略
round(x[,d]) 四舍五入 d是保留小数位数
max(x,y,z,…) 求最大值
min(x,y,z,…) 求最小值
int() 转为整数,舍弃小数部分(不是四舍五入),参数可以是字符串
float() 转为浮点数,参数可以是字符串
complex() 转为复数
定义一个函数
def <函数名>(<参数>):
<函数体>
return <返回值>
return语句不是必须的。
- 可选参数
可以设置可选参数,必须放在非可选参数之后。
def fact(x,y=1):
y就是可选参数
- 可变参数
*b:表示参数的数量可变,类似一个数组
- 参数传递的方式
按位置或名称传递,位置传递按照位置对应传递,而名称传递要显示指定名称和值,m=1 ,n=2
- 返回值
可以返回任意数量的值,返回多个类似于元组类型(1,2,3)。
- 局部变量和全局变量
函数内部定义的变量,是局部变量;
在函数体内部想使用全局变量,要使用global关键字声明变量;
局部变量若为组合数据类型且未使用[]来真实创建的话,视为全局变量。
- lambda函数
是一种匿名函数,用于定义简单的,能够在一行内表达的函数
<函数名> = lambda<参数>:<表达式>
主要用于作一些特定函数或方法的参数,一般情况下不建议使用
字符串
三引号也是字符串,如果没有被使用,就变成了多行注释;
双引号引起来的中间的单引号就是作为字符输出,反之亦然;
如果即希望输出单引号又希望输出双引号,就用三引号括起来;
字符串切片高级用法:[M:N:K] K表示步长,M和N缺失表示到头;
字符串逆序用[::-1]
- 特殊字符:
\b表示回退
\n表示换行
\r表示光标移回行首
- 字符串操作符:
N*x 复制N字符串X次;
X in s 判断X是否是s的子串
len()返回长度
str() 任意类型转为字符串
hex() 或 oct() 整数转为16进制或8进制小写形式
- 字符串处理函数
chr(x): x为unicode编码,返回对应字符
ord(x): x为字符,返回unicode编码
- 字符串处理方法
方法特指a.b的方式
lower()或.upper() 返回全小写或全大写
split(sep =none) 返回字符被以sep分割的子串
count(sub)返回子串sub在字符串中出现的次数
replace(old,new) 所有old子串被替换为new,要注意,replace不会改变原来字符串的内容
center(width[,fillchar]) 根据宽度居中,两边用fillchar来填充,缺省为空格
strip(chars) 从两侧去掉chars中的字符
join(iter) 给每个字符中间插入一个iter字符
- 字符串格式化
str.format()
“{1}dd{2}dd{3}”.format(“qq”,”ww”,20) 前面字符串中的占位符中的参数序号可以调换顺序
槽中的格式:{:<填充> <对齐> <宽度> <,千位分隔符> < . 精度数字> <类型>}
填充:用于填充的单个字符
对齐:<左对齐 ^居中 >右对齐
宽度:槽设定的输出宽度
类型:b c d o x X e E f %
time库
- 用法
import time
time.xxx()
- 时间获取
time() 获取计算机内部时间值 是一个浮点数,以秒为单位
ctime() 获取时间,字符串形式,易读
gmtime() 获取时间,返回内部时间变量类型
- 时间格式化
strftime(tpl,ts)
tpl是格式化模板字符串,定义了输出效果,ts是时间变量类型(即用gmtime()获得的时间)
- 格式化字符串
strptime(str,tpl) 从字符串中解析出时间变量
str是字符串形式时间,tpl 是格式化输入
返回一个时间变量
- 程序计时
perf_counter() 测量时间,两次调用的差值
sleep() 停止
程序分支结构
- 紧凑形式的二分支结构
<表达式1> if <条件> else <表达式2>
条件组合
- and 逻辑与
- or 逻辑或
- not 逻辑非
异常处理
- 基本用法
try:
except[异常类型]:
try中语句发生异常,执行except中的语句
- 高级用法
else对应语句块3在不发生异常时执行;
try:
<语句块1>
except:
<语句块2>
else:
<语句块3>
finally:
<语句块4>
finally对应语句块4一定执行;
循环
- 遍历循环
for <循环变量> in <遍历结构>:
从遍历结构提取元素,放到循环变量中。
range(N,M,K):表示从N开始,不到M,步长为K,产生一个列表。
遍历结构可以放一个列表,遍历列表每个元素;
放一个文件标识符,遍历每一行;
- 无限循环
while <条件>:
反复执行,直到条件不满足;
- 循环控制保留字
break 和continue
- 循环高级用法
for in :
else:
或
while :
else:
else的语句块在循环没有被break退出时执行
random库
伪随机数,采用梅森旋转算法生成的伪随机序列中的元素。
- 基本随机数函数
seed() 设置种子,不设seed时,默认使用第一次random时的系统时间作为种子
random()获得0-1之间的随机小数
- 扩展随机数函数
randint(a,b) 生成一个a到b之间的整数
randrange(m,n[,k]) 生成一个M到N之间以K为步长的随机整数
getrandbits(k) 生成K比特长度的随机整数
uniform(a,b) 生成a到b之间随机小数
choice(seq) 从序列seq中随机选择一个元素
shuffle(seq) 将seq中元素随机排序(seq本身被打乱了)
代码复用与函数递归
- 递归的定义
两大关键特征:链条和基例
pyinstaller库的使用
将源码转换为可执行文件。
使用pip install pyinstaller安装;
pyinstaller -F <文件名.py>
集合类型
集合类型定义
- 与数学概念中的集合一致,是多个元素的无序组合,每个元素唯一
- 集合元素不可更改,不能是可变数据类型
- 用{}表示,元素间用逗号分隔
- 建立集合用{} 或 set()
- 建立空集合必须用set()
集合操作符
集合处理方法
应用场景
- 包含关系比较
- 数据去重
序列类型
定义
- 一维元素向量,元素类型可以不同
- 由序号引导,与字符串的序号规则一致
- 序列类型细分为:字符串、元组、列表
序列处理函数及方法
sort()方法,可用于排序,
参数 :
- key= lambda x:x[0] 用于说明使用那个元素进行排序
- reverse=true 反序
元组类型
- 一旦创建,不可修改
- 使用 () 或tuple()创建,元素用逗号分隔
- 小括号可以省略
元组类型操作
继承了序列全部通用操作
列表类型
有顺序,创建后可以随意修改
使用[]或list()创建
元素可以相同或不同,无长度限制
列表操作函数和方法
字典类型
定义
- 一种映射关系,即键值对,key和value的一一对应
- 键是索引的一种扩展
- 键值对之间是无序的
- 采用{}或dist()创建,键值对用冒号表示
用法
通过键获取值:value = d[key]
增加值:d[key] = value
操作函数和方法
jieba库的使用
jieba库是优秀的中文分词第三方库,用于将中文文本分成单个的词语
使用 pip install jieba 来安装
最常用的精确模式,jieba.lcut(),返回一个列表
文件操作
文件的理解
本质上所有文件都是二进制形式存储
形式上有文本和二进制形式展示
文件的打开和关闭
f = open(<文件名>,<打开模式>)
opeen函数用于打开文件
f.close()
close()函数用于文件关闭
有打开就有关闭,不要忘了close
文件读取
还可以用
for line in file:
line...
的方式去编译一个文件,读取每一行
文件的写入
一位数据的格式化和处理
数据维度的概念
一维数据:有序或无序的线性方式组织的数据,对应列表、数组、集合等概念
二维:二维数据是一维数据的组合,典型的比如表格
一维数据的存储
- 以空格分隔进行存储,不换行,缺点是数据中本身不能存在空格
- 以逗号进行分隔,不换行,缺点是数据中本身不能存在逗号、
一维数据的读取
用split()函数对数据进行分隔,变为列表
一维数据的写入
一个列表,使用
"<分隔符>".join(list)
的方式进行处理,使其变为由分隔符分隔的数据,再写入文件
二维数据格式化和处理
通常使用二维列表进行表示,即外层列表的元素本身也是一个列表
csv数据存储格式
csv是一个国际通用的一二维数据存储格式,以.csv为后缀
每行一个一维数据,用逗号分隔,无空行
excel等通常都可以读取csv文件
某个元素缺失,逗号必须要保留
一般索引习惯,先行后列
二维数据读入处理
fo = open(name)
ls = []
for line in fo:
line = line.replace("\n","") #去掉每行数据最后的换行符
ls.append(line.split(",")) #,每行按逗号分隔为列表
fo.close()
写入处理
ls = [[],[],[]] #一个二维列表
f = open(name,'w') #写形式打开文件
for item in ls:
f.write(",".join(item) + "\n") #以逗号分隔元素返回一个字符串,再在末尾加换行符
f.close()
遍历
用一个二层循环来挨个遍历
wordcloud库的使用
概述
wordcloud是一个优秀的词云展示第三方库
可以做这种图
安装使用
pip install wordcloud
使用
w = wordcloud.WordCloud(<参数>)
获得一个词云对象
配置对象参数
传递给mask的图片,必须要是一个白底的,具有某些形状的图片,比如
常规方法
自顶向下和自底向上
- 自顶向下:分而治之
- 自底向上:模块化集成
计算思维
抽象问题的计算过程,利用计算机自动求解
计算思维是基于计算机的思维方式
python的第三方库
Python社区
安装方法
- pip install <库名称>
这个最常用,速度慢的话可以更换镜像网站的地址,见小技巧
- 集成安装方法
anaconda
- 第三方库文件安装方法
UCI页面: https://www.lfd.uci.edu/~gohlke/pythonlibs/
官方中文文档
https://docs.python.org/zh-cn/3/
OS库的使用
基本介绍
提供通用的、几百根的操作系统交互功能,支持windows、MAC、linux
包含常用路径操作、进程管理、环境参数等
路径操作
使用os.path子库进行操作
import os.path
进程管理
os.system(command)
执行command命令
环境参数
从数据处理到人工智能
python库之数据分析
- Numpy:表达N维数组的最基础库,C语言实现,计算速度优异,提供矩阵运算、广播函数、线性代数等功能,http://www.numpy.org
- Pandas:数据分析高层次应用库,http://pandas.pydata.org
- Scipy:数学、科学和工程计算功能库,http://www.scipy.org
python库之数据可视化
- Matplotlib: 高质量的二维数据可视化功能库
- Seaborn: 统计类数据可视化功能库
- Mayavi:三维科学数据可视化功能库
Python库之文本处理
- PyPDF2: 用来处理pdf文件的工具集
- NLTK: 自然语言文本处理第三方库
- Python-docx: 创建或更新Microsoft Word文件的第三方库
Python库之机器学习
- Scikit-learn: 机器学习方法工具集
- TensorFlow: AlphaGo背后的机器学习计算框架
- MXNet:基于神经网络的深度学习计算框架
从Web解析到网络空间
Python库之网络爬虫
- Requests: 最友好的网络爬虫功能库,Python最主要的页面级网络爬虫功能库
- Scrapy: 优秀的网络爬虫框架,提供了构建网络爬虫系统的框架功能,Python最主要且最专业的网络爬虫框架
- pyspider: 强大的Web页面爬取系统,提供了完整的网页爬取系统构建功能
Python库之Web信息提取
- Beautiful Soup: HTML和XML的解析库
- Re: 正则表达式解析和处理功能库,Python最主要的标准库之一,无需安装
- Python-Goose: 提取文章类型Web页面的功能库
Python库之Web网站开发
- Django: 最流行的Web应用框架,MTV模式:模型(model)、模板(Template)、视图(Views)
- Pyramid: 规模适中的Web应用框架,适合快速构建并适度扩展类应用,Python产品级Web应用框架,起步简单可扩展性好
- Flask: Web应用开发微框架,特点是:简单、规模小、快速
Django > Pyramid > Flask
Python库之网络应用开发
- WeRoBot: 微信公众号开发框架,提供了解析微信服务器消息及反馈消息的功能,建立微信机器人的重要技术手段
- aip: 百度AI开放平台接口,访问百度AI服务的Python功能接口
- MyQR: 二维码生成第三方库,基本二维码、艺术二维码和动态二维码
从人机交互到艺术设计
Python库之图形用户界面
- PyQt5: Qt开发框架的Python接口
- wxPython: 跨平台GUI开发框架
- PyGObject: 使用GTK+开发GUI的功能库
Python库之游戏开发
- PyGame: 简单的游戏开发功能库,Python游戏入门最主要的第三方库
- Panda3D: 开源、跨平台的3D渲染和游戏开发库,一个3D游戏引擎,提供Python和C++两种接口
- cocos2d: 构建2D游戏和图形界面交互式应用的框架,基于OpenGL的游戏开发图形渲染功能,适用于2D专业级游戏开发
Python库之虚拟现实
- VR Zero: 在树莓派上开发VR应用的Python库,非常适合初学者实践VR开发及应用
- pyovr: Oculus Rift的Python开发接口,针对Oculus VR设备的Python开发库
- Vizard: 基于Python的通用VR开发引擎,支持多种主流的VR硬件设备,具有一定通用性
Python库之图形艺术
- Quads: 迭代的艺术,对图片进行四分迭代,形成像素风
- ascii_art: ASCII艺术库,将普通图片转为ASCII艺术风格