python学习笔记-基础版
Posted 小王不叫小王叭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习笔记-基础版相关的知识,希望对你有一定的参考价值。
零基础学python过程中自己记录的学习笔记,基本函数和方法,供学习参考
python学习笔记
一、基本数据类型
1、数值运算函数
2、字符串
2.1、字符串操作处理
切片:[m:n:k] m起始下标,n结束下标(不包括),k步长
x + y :连接连个字符串
x * n :复制n次字符串x
x in s :如果x是s子串,则返回true,否则返回false
len(x) :长度,返回字符串x的长度
len("123456") # 6
hex(x) 或 oct(x) :整数x的十六进制或八进制小写形式字符串
hex(425) # "0x1a9"
oct(425) # "0o651"
chr(u) :u为Unicode编码,返回其对应的字符
ord(x) :x为字符,返回其对应的Unicode编码
2.2、字符串处理方法
方法必须用.来进行执行
str.lower() 或 str.upper() :返回字符串的副本,全部为小写/大写
str.split(sep=None) :返回一个列表,由str通过sep被分割的部分组成
"A,B,C".split(",") # ['A','B','C']
str.count(s) :返回一个数字,计算str中s的个数
str.replace(old,new) :返回字符串str副本,所有old子串替换为new新串
str.strip(chars) :从str中去掉在其左侧和右侧chars中列出的字符
str.rstrip(chars) :从str中去掉其右侧chars中列出的字符
str.join(s) :将str插入到字符串s中
','.join("12345") # 1,2,3,4,5
2.3、字符串类型的格式化
“ ”.format(x,y)
3、time库的使用
time库是python中处理时间的库函数
import time
time.<b>()
3.1、时间获取函数
time() :获取当前的时间戳,表示从1970.01.01到当前时间为止,单位为秒
time.time() #1649499510.9574826
ctime() :获取当前时间并以易读的方式返回,返回字符串
time.ctime() #Sat Apr 9 18:18:45 2022
gmtime() :获取当前时间,以一种计算机可以处理的格式返回
time.getime() #time.struct_time(tm_year=2022, tm_mon=4, tm_mday=9, tm_hour=10, tm_min=20, tm_sec=48, tm_wday=5, tm_yday=99, tm_isdst=0)
3.2、时间格式化
strftime(tpl,ts) :tpl是格式化模板字符串,用来定义输出效果,ts是计算机内部时间类型变量
t = time.gmtime()
time.strftime("%Y-%m-%d %H:%M:%S",t)
#输出2022-04-09 10:30:17
strptime(str,tpl) :str是字符串形式的时间值,tpl是格式化模板字符串
3.3、程序计时
程序计时指测量起止动作所经历时间的过程
测量时间:perf_counter()
start = time.perf_counter()
end = time.perf_counter()
x = end - start
print(x)
产生时间,休眠:sleep() 单位为秒
案例:文本进度条
import time
scale = 50
print("执行开始".center(scale//2,'-'))
start = time.perf_counter() #开始时间
for i in range(scale+1):
a = '*' * i
b = '.' * (scale - i)
c = (i / scale) * 100
end = time.perf_counter() - start
print("\\r:^3.0f%[->] :.2fs".format(c,a,b,end),end='')
time.sleep(0.1)
print("\\n"+"执行结束".center(scale//2,'-'))
二、程序的控制
1、程序的分支结构
if 条件:
语句块1
else:
语句块2
紧凑形式:表示式1 if 条件 else 表达式2 #不能进行赋值操作
"对" if x==0 else "错"
if 条件1: #多分支结构
语句块1
elif 条件2:
语句快2
else:
语句块3
x and y #两个条件x和y的逻辑与
x or y #两个条件x和y的逻辑或
not x #条件x的逻辑非
2、程序的异常处理
异常处理的基本使用
try:
语句块1
except 异常类型:#标准类型后,只会相应这个异常
语句块2
异常处理的高级使用
try :
语句块1
except 异常类型: #发生对应的异常后,执行语句块2
语句块2
else : #在不发生异常时执行语句块3
语句块3
finally : #不管发不发生异常,最后都会执行语句块4
语句块4
3、循环结构
for 循环变量 in 遍历结构: #遍历循环
语句块
range(n)函数:产生由0到n-1的数字序列
range(m,n,k) :m为起始位置,n为终止位置(不包含n),k为步长
while 条件: #无穷循环
语句块
break continue 循环控制保留字,退出当前循环层次
循环else的高级用法:与break有关,若break生效,则不允许else语句,否则在程序结束运行else语句
for i in range(5):
if i == 1 :
break
print(i)
else:
print('是否退出')
4、random库的使用
random库是使用随机数的python标准库
使用方法:import random
4.1、基本随机数函数
seed(a=None) #初始化给定的随机数种子,默认为当前系统时间。才方便程序复现
random.seed(10) #产生种子10对应的序列
random() #生成[0.0 , 1.0)之间的随机小数
4.2、扩展随机数函数
randint(a,b) #生成一个[a,b]之间的整数
random.randint(10,100) # 64
randrange(m,n[,k]) #生成一个[m,n)之间以k为步长的随机整数
random.randrange(10,100,80) # 80
getrandbits(k) #生成一个k比特长的随机整数
uniform(a,b) #生成一个[a,b]之间的随机小数
choice(seq) #从序列中随机选取一个元素,并返回
shuffle(seq) #将序列seq种元素随机打乱
三、函数和代码复用
1、函数
1.1、函数的参数传递
函数可以有参数,也可以没有参数,但必须保留括号
def 函数名():
函数体
return 返回值 #可以省略
函数定义时,可以设置默认参数,为可选参数
def 函数名(非可选参数,可选参数):
函数体
return 返回值
def fun(n,m=1): #m默认值为1,为可选参数
return n+m
a = fun(10) #不设置可选参数传递
b = fun(10,5) #设置可选参数
c = fun(m=5,n=10) #名称传递,默认为位置传递
函数定义时可以设置可变参数传递,即不确定参数的总数量
def 函数名(参数,*a):
函数体
return 返回值
def fun(n,*a):
for i in a:
n += i
return n
a = fun(10,3) #最少一个参数
b = fun(10,3,4,5,6) #传递多个参数
1.2、全局变量和局部变量
基本数据类型,无论是否重名,局部变量与全局变量不同
可以通过global保留字在函数内部声明全局变量
在函数外定义的组合数据类型,在函数内不需要声明,就为全局变量
在函数内创建的组合数据类型,就是局部变量
1.3、lambda函数
lambda函数返回函数名作为结果
lambda函数是一种匿名函数,即没有名字的函数
函数名 = lambda 参数 : 表达式
f = lambda x,y = x + y
print(f(10,5))
lambda函数主要用作一些特定函数或方法的参数
lambda函数有一些固定使用方式,建议逐步掌握
2、代码复用和函数递归
递归类似数学归纳法,数学思维在编程中的体现
递归本身是一个函数,需要调用本身。
def fun(n): #求解n!,采用递归
return 1 if n == 1 else n*fun(n-1)
print(fun(5))
递归只用考虑:出口,以及n与n-1之间的关系
#汉诺塔实践
steps = 0
def hanoi(src, des, mid, n):
global steps
if n == 1:
steps += 1
print("[STEP:>4] ->".format(steps, src, des))
else:
hanoi(src,mid,des,n-1)
steps += 1
print("[STEP:>4] ->".format(steps, src, des))
hanoi(mid,des,src,n-1)
N = eval(input())
hanoi("A", "C", "B", N)
3、PyInstaller库的使用
将.py源代码转换为无需源代码的可执行文件
安装下载(cmd命令行):pip instal pyinstaller
使用方式:进入当前文件 cd /d 路径
cmd命令行:pyinstaller -F 文件名.py
-h 查看帮助 --clean 清理打包过程中的临时文件
-D,–onedir 默认值,生成dist文件夹
-F,–onefile 在dist文件夹中只生成独立的打包文件
-i<图标文件名.ico> 指定打包程序使用的图标(icon)文件
四、组合数据类型
1、集合类型
集合是多个元素的无序组合,集合中每个元素唯一,不存在相同元素,集合之间是无序的
集合用大括号表示,元素间用逗号分隔
建立集合类型用或set(),建立空集合类型,必须使用set()
六大操作符 | 描述 |
---|---|
S | T | 返回一个新集合,包括在集合S和T中的所有元素 |
S - T | 返回一个新集合,包括在集合S但不在T中的元素 |
S & T | 返回一个新集合,包括同时在集合S和T中的元素 |
S ^ T | 返回一个新集合,包括集合S和T中的非相同元素 |
S <= T 或 S < T | 返回True/False,判断S和T的子集关系 |
S >= T 或 S > T | 返回True/False,判断S和T的包含关系 |
集合操作函数或方法 | 描述 |
---|---|
S.add(x) | 如果x不在集合S中,将x增加到S |
S.discard(x) | 移除S中元素x,如果x不在集合S中,不报错 |
S.remove(x) | 移除S中元素x,如果x不在集合S中,产生KeyError异常 |
S.clear() | 移除S中所有元素 |
S.pop() | 随机返回S的一个元素,更新S,若S为空产生KeyError异常 |
S.copy() | 返回集合S的一个副本 |
set(x) | 将其他类型变量x转变为集合类型 |
2、序列类型
序列是具有先后关系的一组元素
序列是一维元素向量,元素类型可以不同
序列索引包括从0开始的正向顺序,以及从-1开始的逆向顺序
map()函数:是python内置函数,会根据提供的函数对指定的序列做映射。
map(function,iterable,...)
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。
2.1、列表
列表是一种序列类型,创建后可以随意被修改,使用方括号[]或list()创建,元素间用逗号,分隔
列表中各元素类型可以不同,无长度限制
列表方法 | 描述 |
---|---|
ls.append() | 将一个对象附加到列表末尾 |
ls.clear() | 清空列表内容 |
ls.copy() | 复制列表,并返回一个副本 |
ls.count(x) | 计算列表中指定元素x的个数 |
ls.extend(lst) | 将列表lst扩展到列表ls之后 |
ls.index(x) | 在列表中查找元素x第一次出现的索引,如果没有引发ValueError错误 |
ls.insert(2,x) | 将元素插入到列表ls下标为2的位置 |
ls.pop() | 从列表删除一个元素,并返回 |
ls.remove(x) | 删除第一个为x的元素,不返回,如没有,引发ValueError异常 |
ls.reverse() 反转列表
ls.sort() 列表就地排序
sorted()函数:返回一个排序列表,不修改原列表
高级排序sort()
key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。此处一般与lambda函数结合使用
reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。
sort()接受两个可选参数:key和reverse
2.2、元组
元组是一种序列类型,一旦创建就不能被修改
使用小括号()或tuple()创建,元素间用逗号,分隔
元组继承了序列类型的全部通用操作,元组因为创建后不能修改,因此没有特殊操作
3、字典
字典是键值对的集合,键值对之间无序,采用大括号和dict()创建,键值对用冒号:表示
函数或方法 | 描述 |
---|---|
d.keys() | 返回字典d中所有的键信息 |
d.values() | 返回字典中所有的值信息 |
d.items() | 返回字典中所有的键值对信息 |
d.get(k,) | 键k存在,则返回相应值,不在则返回值 |
d.pop(k,) | 键k存在,则取出相应值,不在则返回值 |
d.popitem() | 随机从字典d中取出一个键值对,返回一个元组形式 |
d.clear() | 删除所有的键值对 |
4、jieba库的使用
jieba是优秀的中文分词第三方库
安装jieba库:cmd命令行:pip install jieba
jieba分词的三种模式:
精确模式:把文本精确的切分开,不存在冗余单词
全模式:把文本中所有可能的词语都扫描出来,有冗余
搜索引擎模式:在精确模式基础上,对长词再次切分
函数 | 描述 |
---|---|
jieba.lcut(s) | 精确模式,返回一个列表的分词结果 |
jieba.lcut(s,cut_all = True) | 全模式,返回一个列表类型的分词结果,存在冗余 |
jieba.lcut_for_search(s) | 搜索引擎模式,返回一个列表类型的分词结果,存在冗余 |
jieba.add_word(w) | 向分词词典增加新词w |
jieba.lcut("中国是一个伟大的国家") #精确模式
# ['中国', '是', '一个', '伟大', '的', '国家']
jieba.lcut("中国是一个伟大的国家",cut_all = True) #全模式
# ['中国', '国是', '一个', '伟大', '的', '国家']
jieba.lcut_for_search("中华人民共和国是伟大的") #搜索引擎模式
# ['中华', '华人', '人民', '共和', '共和国', '中华人民共和国', '是', '伟大', '的']
jieba.add_word('蟒蛇语言')
五、文件操作和数据格式化
1、文件的使用
文件是数据的抽象和集合
文件是存储在辅助存储器上的辅助序列,是数据存储的一种形式,文件展现形态:文本文件和二进制文件
文本文件:由单一特定编码组成的文件,如UTF-8编码
二进制文件:直接由比特0和1组成,没有统一字符编码
文件的打开模式 | 描述 |
---|---|
‘r’ | 只读模式,默认值,如果文件不存在,返回FileNotFoundError |
‘w’ | 覆盖写模式,文件不存在则创建,存在则完全覆盖 |
‘x’ | 创建写模式,文件不存在则创建,存在则返回FileExistsError |
‘a’ | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 |
‘b’ | 二进制文件模式 |
‘t’ | 文本文件模式,默认值 |
‘+’ | 与r/w/x/a一同使用,在原功能基础上增加同时读写功能 |
1.1、文件内容的读取
操作方法 | 描述 |
---|---|
f.read(size=-1) | 读入全部内容,如果给出参数,读入前size长度 |
f.readline(size=-1) | 读入一行内容,如果给出参数,读入该行前size长度 |
f.readlines(hint =-1) | 读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行 |
1.2、文件内容的写入
操作方法 | 描述 |
---|---|
f.write(s) | 向文件写入一个字符串或字节流 |
f.writelines(lines) | 将一个元素全为字符串的列表写入文件 |
f.seek(offset) | 改变当前文件操作指针的位置,offset含义如下:0-文件开头;1-当前位置;2-文件结尾 |
2、数据的格式化和处理
2.1、一维数据
由对等关系的有序或无序数据构成,采用线性方式组织,对应列表、数组和集合等概念
有序使用列表,无序使用集合
文件读到集合:split()
集合写入文件:.join(s)
2.2、二维数据
由多个一维数据构成,是一维数据的组合形式,表格是典型的二维数据
二维列表表达二维数据: [ [], [] ]
两层for循环遍历每个元素
CSV数据存储格式:国际通用的一二维数据存储格式,一般.csv扩展名
每行一个一维数据,采用逗号,分隔,无空行。存储一般按行存储
3、wordcloud库的使用
wordcloud库是优秀的词云展示第三方库
词云以词语为基本单位,更加直观和艺术的展示文本
安装:cmd命令行:pip install wordcloud
wordcloud库把词云当作一个WordCloud对象
wordcloud.WorCloud()代表一个文本对应的词云,可以根据文本中词语出现的频率等参数绘制词云,绘制词云的形状、尺寸和颜色都可以设定
w = wordcloud.WorCloud() 生成一个词云对象
方法 | 描述 |
---|---|
w.generate(txt) | 向WordCloud对象w中加载文本txt |
w.to_file(filename) | 将词云输出为图像文件,.png或.jpg格式 |
常规使用方法:
1、配置对象参数 w = wordcloud.WorCloud(<参数>)
2、加载词云文本 w.generate(“Python and WordCloud”)
3、输出词云文本 w.to_file(filename.png)
参数 | 描述 |
---|---|
width | 指定词云对象生成图片的宽度,默认400像素 |
height | 指定词云对象生成图片的高度,默认200像素 |
min_font_size | 指定词云中字体的最小字号,默认4号 |
max_font_size | 指定词云中字体的最大字号,根据高度自动调节 |
font_step | 指定词云中字体字号的步进间隔,默认为1 |
font_path | 指定字体文件的路径,默认None |
max_words | 指定词云显示的最大单词数量,默认200 |
stop_words | 指定词云的排除词列表,即不显示的单词列表 |
mask | 指定词云形状,默认为长方形,需要引用imread()函数 |
background_color | 指定词云图片的背景颜色,默认为黑色 |
#修改词云形状
from scipy,misc import imread
mk = imread("pic.png")
w = wordcloud.WorCloud(mask=mk)
参数 | 描述 |
---|---|
width | 指定词云对象生成图片的宽度,默认400像素 |
height | 指定词云对象生成图片的高度,默认200像素 |
min_font_size | 指定词云中字体的最小字号,默认4号 |
max_font_size | 指定词云中字体的最大字号,根据高度自动调节 |
font_step | 指定词云中字体字号的步进间隔,默认为1 |
font_path | 指定字体文件的路径,默认None |
max_words | 指定词云显示的最大单词数量,默认200 |
stop_words | 指定词云的排除词列表,即不显示的单词列表 |
mask | 指定词云形状,默认为长方形,需要引用imread()函数 |
background_color | 指定词云图片的背景颜色,默认为黑色 |
#修改词云形状
from scipy,misc import imread
mk = imread("pic.png")
w = wordcloud.WorCloud(mask=mk)
以上是关于python学习笔记-基础版的主要内容,如果未能解决你的问题,请参考以下文章
python基础学习笔记——Python基础教程(第2版 修订版)第一章
python基础学习笔记——Python基础教程(第2版 修订版)第四章(字典)
python基础学习笔记——Python基础教程(第2版 修订版)第十章(充电时刻)