导图社区 Python知识总结
以学习笔记的形式自己做的导图,主要内容有快捷键、基础、进阶、Linux系统。希望能对你有所帮助!
编辑于2022-08-27 23:42:51 河南Python
快捷键
基础
六大类型
字符串str
编码
进制
二进制
0b
将十进制转换为二进制
bin()
手算二进制转换为十进制
对照112416
八进制
0o
十六进制
0d
ascill码
美国人使用 最多128
ISO-8859-1码
在ascill码的基础上增加到最多255位,增加欧洲国家适用
Unicode万国码
以上两种为背景作为改进 比较全面的码 包括简体中文
utf-8
统一编码,汉字占三个字节,每个字节占八位二进制码 几乎兼容世界上所有语言
中国自己的编码集,国标扩
GBK 国标扩
简体中文,汉字占两个字节 每个字节有八位二进制码
BIG5
繁体中文
内置函数
ord()
转换字符对应的编码 print (ord(′a′)) --97 print (′你′) --20320 编成八位是:0002 0320
chr()
转换编码对应的字符 print (chr(65)) --A
encode ()
对字符进行编码 print (′你′.encode(′utf-8′)) ---b′\xc4\xe3′
decode()
对编码进行解码成字符 x=b′\xe4\xbd\xa0′ print (x.decode('utf-8')) ---你
交互函数
输入input()
默认用户输入的是 字符串类型
输出print ()
其他类型转换为字符串
str()
字符串规则 与运算
用比较运算符时对比的是ascill码
字符串与字符串相加 表示拼接字符串
字符串与数字n相乘 表示复制n次字符串
可以使用成员运算符
字符串不可变原则
字符串操作
字符串的查找
find() 返回下标或-1
x="哈哈呵呵嘿嘿" if x.find(′呵′) == -1: pass
index() 返回下标或报错
查看某个字符在字符串中 出现的次数
count()
x.conut("你")
判断字符串中是否指定字符 结果返回bool类型
判断开头是否一致
startswith()
判断结尾是否一致
endswith()
判断字符串是否全是字母
isalpha()
判断字符串是否全是整数数字
isdigit()
判断字符串是否只有字母或者数字 ,又或者全是字母数字
isalnum()
判断字符串是否全是空格
isspace()
字符串的替换 因为字符串不可变 需要创建变量接收替换后的对象
replace()
分隔字符串 传入字符串里指定字符 变成逗号,作为分隔
从左边开始分隔 有第二个参数n 用作分隔n段 返回列表
split()
从右边开始分隔 效果同上
rsplit()
如果字符串中有换行符\n 则按照换行符作为分隔 返回列表
split lines()
将字符串中指定字符作为参数 分隔成三部分,返回一个元组 (字符 指定字符 字符)
partition()
rpartition()
用作文件的话以 . 作为参数可以分割成 ("文件名", ". ", "后缀名")
去除字符串两边多余字符 或者添加多余字符
去除字符串两边的空格或字符
strip()
去除字符串左边空格或字符
lstrip()
去除字符串右边空格或字符
rstrip()
指定长度字符串 添加空格
ljust ()
如果长度不够,用指定字符 填充,如果长度够或者超出, 则原字符串不变 相当于原字符放左边
rjust()
效果同上,但是填充字符 移到了左边 相当于原字符放右边
.center()
效果同上,但填充字符分配到两边 填充字符不对称优先填充右边
将一个可迭代对象中的元素 以指定字符拼接 之后转换成字符串
.join()
列表元组都可以 join(可迭代对象)
修改字符串字母大小写
整个字符串首字母大写
.capitalize()
每个单词首字母大写
title()
全部大写
upper()
全部小写
lower()
字符串格式化
format
f"...{...}..."
和混合使用
修改字符串连接符,默认空格
sep = ' '
修改输出字符串后,末尾是否换行 默认换行
end=' '
占位符
% %% %d %s %D %Y......
%x
a=255 print ("%x" % a) ---ff 十六进制
%s
字符串
%d
数字 %3d 表示保留三位数的数字,如果不够三位则用空格在数字左边填充 %-3d 效果同上,如果不够则用空格在数字右边填充
%f
浮点数 %2f 表示小数点后保留两位的浮点数
%%
表示对%原样输出 print ("我叫%%s,我%d岁了"% 19) ---我叫%s,我今年19岁了
name="张三" age=23 print ("我的名字叫%s,我今年%d岁了"%(name,age) sep=′ ′) 我的名字叫张三,我今年23岁了, 若有多个值,则后面用括号包括
转义字符 \
\t 表示制表符,制造空格
\n 表示换行符,制造换行
\\ 对\表示原样输出
r 字符串前加r表示字符串里原样输出
整数int
bool类型
判断为真返回: True
判断为假返回: False
函数
绝对值
abs()
最大值
max()
最小值
min()
求和
sum()
整数
其他类型转换为整数 int()
浮点数
其他类型转换为浮点数 float()
可使用算数运算符进行运算 可以使用比较运算符
列表list
其他类型转换列表 list()
列表操作
查
a=[6,16,23,"你好","hello"] print (a[2]) ---23 print (a[1:4]) ---[16,23,你好] print (a[1:4][2]) ---你好
查找元素在列表中出现的位置 找到返回索引 没找到报错
index()
x=[...] x.index(元素) print (x)
查看列表中某个元素出现的次数
count()
x.count(3)
用成员运算符查看列表中是否存在 指定对象
print (元素 in x) ---结果返回boll
改
a=[3,5,"你好",6,45] a[2]=7 print (a) ---[3,5,7,6,45]
增
列表末尾添加指定元素
append()
x.append(元素)
索引位置添加元素
insert()
x.insert(索引,元素)
删
删除指定元素
remove()
x.remove(元素)
弹出索引元素,且可将弹出的元素赋值给新变量
pop()
x.pop(索引) 若没有参数,默认弹出对象最后一个元素 可以把弹出的元素赋值到一个对象里 x=[1,9,5,7,8] y=x.pop(2) print (y) ---5
清空列表
clear ()
x.clear()
永久删除索引数据, 也能永久删除整个列表,变量,项目等
del
del x[3] del x
对原列表,和一个可迭代对象进行拼接 变成一个列表
extend()
a=[4,5,6] b=[4,57,9,23]或b=(4,57,9,23)或"...." a.extend(b) print (a) ---[4,5,6,4,57,9,23]
也可以使用加号➕实现两组列表的拼接
反转列表
reverse()
x.reverse()或x[::-1]
列表中相同元素排序
按照从小到大,从aA到zZ 进行排序
将原列表排序
.sort()
a=[1,3,5,4,2] a.sort() print (a) ---[1,2,3,4,5]
将原列表反排序
sort(sever=True)
a.sort(reverse=True) 将原列表反排序
将原列表排序后 赋值给一个新对象 原列表不变
sorted()
a=[1,3,2,5,4] x=sorted(a) print (a) print (x) ---[1,3,2,5,4] ---[1,2,3,4,5]
将原有列表反排序后 赋值给一个新对象 原列表不变
sorted(sever=True)
x=sorted(a,reverse=True) 反排序后赋值给新对象
用循环遍历列表
while循环遍历
x=[...] i=0 while i<len(x): print (x[i]) i+=1
原理: print (x[0]) print (x[1]) print (x[2]) ......
for循环遍历
for i in 可迭代对象: print (i)
带索引的for循环
enumerate()
a=[[1,2,3],[4,5],[6,7,8,9]] for i,b in enumerate(a): print ("第%d个房间有%d人" %(i,len(b)) ---第0个房间有3人 第1个房间有2人 第2个房间有4人
用列表推导式可以生成列表
a=[i for i in range(1,11)] a=[i fori in range(10) if i%2==0] a=[(x,y) for x in range(1,6) for y in range(10,20)]是一列元组组成的列表 [(1,10),(1,11)...(1,19)...(2,11),...(2,19)...(5,19)]
拷贝
浅拷贝
浅拷贝只能拷贝一维列表,有多维列表也 只能拷贝一维,内部列表不能拷贝
x=[...] y=x 指向同一内存地址 修改原列表,新列表也会被修改 叫做指向,赋值
x=[...] y=x.copy y=x[:] 或import copy y=copy.copy(x) 指向不同的内存地址 修改原列表,新列表不受影响
深拷贝
深拷贝拷贝多维列表全部拷贝 必须调用copy模块 copy.deepcopy()
import copy a=[1,2,[3,4,5],6,7] x=copy.deepcopy(a)
元组tuple
元组用()表示 如果只有一个元素 要在这个元素后面加逗号
可以使用加号➕实现两个元组的拼接
元组类型是不可变 类型只能查找 不可以增删改操作
index() 查找元素返回索引
count() 查找元素出现的次数
其他类型转换元组类型
tuple()
tuple(只能放入可迭代对象)
在一个元组里全是字符串元素时 可以使用join()方法来拼接 返回一个字符串类型
元组可以遍历 可以使用成员运算符
字典dict
使用{}包括 使用键值对的方法 x={key:value,key:value,key:value} key 键不允许重复,若不是重复则 后一个key会覆盖前一个key 字典是无序的
key键一般使用不可变数据类型,一般使用字符串类型 value值一般可以使用任何数据类型
字典的增删改查
字典的查找
通过下标来查找对应的值 x[key]
如果索引的key不存在 则报错
可以使用函数方法来获取
get()
x.get(键) 如果字典中不存在对应的键,则默认返回None 可以指定第二个参数,若不存在则返回第二个参数
添加元素
可以通过下标添加新的键值对
x[新键]=新值
修改
通过下标来修改
x[键]=值
删除元素
pop方法
弹出字典元素 x.pop(键) 也可以把弹出的元素的值 赋值给一个对象,只有值 y=x.pop[键] print (y) ---值
弹出字典元素 x.popitem() 也可以把弹出元素的键和值 赋值给一个对象,为元组类型是键和值 y=x.popitem() print (y) ---(键,值) 注:这种方法没有参数,弹出的元素 是字典中的最后一个键值对
del方法
通过下标永久删除字典元素 del x[键]
永久删除整个字典 包括变量和内存 del a
清空字典
清空整个字典, 使其变成空字典 x.clear()
字典的拼接
update()
x={1:2,3:4} y={10:20,30:40} x.update(y) print (x) ---{1:2,3:4,10:20,30:40} 等同于列表的extend()方法
加号也可以实现拼接
字典的遍历
遍历key
.keys() 是一个函数方法 表示字典x里的多个/所有key 返回由key组成的列表
for k in x: print (k) 或者 for k in x.keys(): print (k)
遍历value
.values() 返回由value组成的列表
for v in x.values(): print (v)
遍历键值对
.items() 返回由多个元组形式的键值对 组成的列表 [(key,value),(key,value),(key,value)]
for k,v in x.items(): print (k, '=', v)
用于交换字典中key与value位置 的字典推导式
y={1:2,3:4,5:6} x={v:k for k,v in y.items()} print (x) ---{2:1,4:3,6:5}
集合set
集合的介绍
集合里的元素不可以重复 用set()方法可以将对象去重 返回一个集合
集合里元素是不重复的
集合是无序的
集合不支持加法运算➕
{} 表示一个空字典 set() 表示一个空集合 要创建空集合时只能使用set()
集合操作
添加元素,因为集合是无序的 所以添加的元素位置不确定 x.add(元素)
.add()
删除元素
x.pop() 随机删除一个元素
x.remove(元素) 删除指定元素
清空集合
x.clear()
集合的拼接
将集合与另一个 可迭代对象进行拼接 返回一个集合类型 内存地址不变
x.update(可迭代对象)
将集合与另一个集合拼接 返回一个集合类型 一个新的内存地址新的对象
y=x .uinon( 集合)
集合的运算符
减法➖ 集合的差集运算 表示去掉重复的元素 显示剩下的不重复元素
a={1,2,3,4,5,6} b={4,5,6,7,8,9} print (a-b) ---{1,2,3} print (b-a) ---{7,8,9} 注意:a-b表示a的差集,b-a表示b的差集
按位与运算符& 集合的交集运算 表示去掉不重复的 显示重复的
print (a & b) ---{4,5,6}
按位或运算符 | 集合的并集运算 表示两个集合拼接 拼接后自动去重
print (a | b) ---{1,2,3,4,5,6,7,8,9}
按位异或运算符^ 表示将两个集合的差集进行拼接 集合a与b差集的并集
print (a^b) ---{1,2,3,7,8,9}
检测对象类型
type()
运算符
成员运算符
在 不在 的意思 判断对象中是否存在指定对象 结果返回bool
in 或 not in
可用于字符串,列表,元组,字典,集合 注意:成员运算符在字典中只能访问key不能 访问value
比较运算符
>, <,≥, ≤, ==,!=
算数运算符
+ - * / 取商// 取余% 乘方**
➕ 对字符串,列表,元组进行拼接
➖ 集合的差集运算
* 字符串,列表,元组的n个拼接
逻辑运算符
or 逻辑或
and 逻辑与
not 逻辑非
对值取反
逻辑运算符的短裤运算
or 1真2假选1真,1假2真选2真 ,1假2假算2假
and 1真2假算2假,1假2真算1假
按位运算符
$ | ^ ~
运算优先级
括号 正负 乘方 按位 乘除 商模 加减
扩展
变量 可以称之为对象
有数字,字母,下划线组成
常量,由全部大写字母组成 一般不常改动
一般变量名清晰简短,且能够大致知道 其含义
驼峰命名法
变量交换
a=1 b=2 x=a a=b b=x 则a=2 b=1
a,b=b,a
内存
查看内存地址函数
id(对象)
不可变数据类型(字符串,数字,元组) 修改后另存于一个 不同的内存地址
可变数据类型(列表,字典,集合) 修改后指向同一内存地址
斐波那契数列
占位
pass
JSON与eval 重点
eval() 将一个字符串 实现它原本的功能
a=′input(′请输入账号:′)′ b="1+1" 这是两个是字符串 然后: x=eval(a) y=eval(b) print (x) -----请输入账号: print (y) ------2
JSON 本质是一个字符串 可以将字典,列表,元组等类型 都变成字符串类型,是一个独立于 编程语言的编码格式,常用于前端 与服务器,数据库等以字符串内容 传送,传输
需要导入json模块 import json
json .dumps( x) 将对象变成JSON字符串
json .londs( x) 将对象从JSON字符串类型 还原成原来的内容
用eval() 也可以还原内容
Python 字符串 字典 列表,元组 转换成 ↓ ↓ ↓ json json字符串 json对象 json数组, 转换后都是字符串类型 是一个列表形式的字符串 元组也会变列表,所以元组要 再变回去的话,只能变回列表!
if 语句条件分支
if-if:
if-else:
if-elif-else
缩进
if 条件判断 : 若为True继续,若为False跳过 缩进后执行 else: 缩进后执行
a=[i if a<i: else:a]
if语句下可嵌套循环语句
循环语句
计数器
count
for in 循环
遍历一个可迭代对象 不断用迭代器next方法寻找下一个数据
可以遍历字符串,列表,元组,字典,集合等
带下标或者迭代次数的遍历 for i, j in enumerate(可迭代对象) i 表示下标或迭代次数 j 表示可迭代对象里的迭代元素
生成函数
range()
for...else 一般用于嵌套if语句
循环嵌套
矩阵
冒泡排序
while 循环
死循环
判断条件为True时不断执行
跳过当前循环
continue
结束循环
break
循环嵌套
外层循环控制有几行的数量 内层循环控制每行里的单个元素数量
矩阵
子主题
冒泡排序
子主题
三元运算符
循环语句下可嵌套if语句
函数
def x(h,j): return h+j print (x(3,5)) ---8
b=x(3,5) 相当于把x的调用赋值给b print (b) ---8
b=x 相当于给函数x起个别名b print (b(3,5)) ---8
函数的参数
声明函数后的参数叫做形参 固定的字符代替
函数调用的参数叫做实参
函数会吧实参按照位置 一一对应的把实参传递给形参 如果参数被指定的话,则不用一一对应
缺省参数,指定参数,默认参数 关键字参数,
def x(a,b,c=5): pass x(1,7) 若没传递第三个参数则默认为5 x(8,6,2) 若传递了则覆盖默认的参数,以传递的实参为准 注意:默认指定参数只能在形参中的最后面
def x(a,b,c) pass x(b=3,c=7,a=9) 可以在实参中指定参数,不用到位置传参
也可以将位置参数与关键字参数混合使用 注意:混合使用时,必须将位置参数放前面,关键字参数放后面
可变参数,
*args
接收多个位置参数 以元组形式保留
**kwargs
接收多个缺省参数,关键字参数 以字典形式保留
返回值
return
把函数的执行结果或别的东西 返回给函数本身,调用函数本身 的时候使用这个执行结果或别的东西
可以返回多个值,用逗号隔开,本质是一个元组 也可以返回列表,字典等
函数的文档注释
在函数被声明后,用 ''' '''且按回车,会在函数体中 有多行的文档注释,可以写这个注释 方便他人或自己理解阅读
用help() 可以查看函数的文档注释 help(x)
全局变量与局部变量
函数外的变量叫做全局变量,所有地方都可以使用 函数内的变量叫做局部变量,只有函数内可以使用 如果全局变量和局部变量同名,且在函数内修改, 则修改的不会影响到全局变量,如果要在函数内部 修改全局变量则要使用global
a="哈喽" def x(): pass global a a="你好" 在外部打印就是被函数内修改后的值 print (a) ---你好
查看全局变量函数globals()
函数内的变量叫做局部变量
查看局部变量函数locals()
函数的作用域
除了函数内的变量其他的都是全局变量 只要是函数内的变量都是局部变量,只作用于当前函数
使用函数递归
求1到n的和 n=n+(n-1)
def x(n): if n==0: return 0 return n+x(n-1) print (x(10)) ---55
求 1 到 n 的和 传入参数10 ❶ 10不等于0,不执行if语句的返回值 ❷ 返回10+ 把10-1也就是9作为参数再次被函数x调用 因为再次调用x(n),这个时候参数n是9,再次经过❶,❷后 为9+ 再次调用x(9-1), 然后 8+ x(8-1), 然后7+ x(7-1).... ❸ 直到n==0时,满足❶的条件,把所有相加的和再加上❶里返回的0 这个结果就是递归从 1~y 相加的和
def x(n): if n!=0: return n+x(n-1) else: return 0 print (x(10)) ---55
求1到n的阶乘 n! n=n*(n-1)
def x(n): if n==0: return 1 return n*x(n-1) print (x(10)) ---3628800
原理同上 注意:当n为1的时候,调用x(n-1)就走到了if语句中 返回值要设为1,不能设为0,因为任何数乘到零都为零
求斐波那契数列第n个数
def x(n): if n==1 or n==2: return 1 return x(n-2)+x(n-1) print (x(8)) ---21
从8开始分裂,分到最后,直到n等于2,或者n等于1时, 返回1,这样就分裂到最后有21个1相加,第八个数为21
回调函数
def x(a,b): return a+b def y(j,k,l): m=l(j,k) return m print (y(3,7,x)) ---10 函数y调用函数x
把一个函数当做另一个函数的参数
匿名函数
lambda
用来表达简单的函数 使用次数很少,基本使用一次 一般会使用在另一函数中
匿名函数名字 = 用匿名函数开头 参数 : 返回值x= lambda a,b:a*bprint (x(4,5))---20 def x(a,b,c): w=c(a,b) return w m=lambda j,k:j*k print (x(3,5,m)) print (x(3,5,lambda v,r:v+r)) ---15 ---8
匿名函数在sort排序中的使用
a=[ {"name":"张三","age":24,"分数":97,"身高":180}, {"name":李四","age":19,"分数":92,"身高":176}, {"name":"小王","age":25,"分数":87,"身高":182}, {"name":"小赵","age":20,"分数":100,"身高":175}, ] 这样的列表是无法排序的,因为列表里的字典没有排序规则,无大小之分 可以在sort()里传递第二个参数,key a.sort(key=lambda x:x[′age′]) 可以以age的值来进行排序 a.sort(key=lambda x:x[′分数′],reverse=True) 也可以分数排序,且为反排序 原理是sort()里的一个参数key是一个函数,这个函数的参数就是列表中的元素,也就是里面的字典,字典索引哪个key就用哪个key里的value进行排序
过滤函数
filter()
filter()函数是一个内置类,将一个可迭代对象一个过滤的作用, 有两个参数,第一个参数是函数,是操作对象的方法,第二个参数是被操作对象 返回的结果也是一个可迭代对象,是一个filter类型的对象 ages=[20,23,17,15,24,30,19] x=filter(lambda a: a>18, ages) 表示以ages为对象用匿名函数方法 过滤出大于18的元素,赋值给x print (x) 直接打印的话显示的是这个filter对象的类型和内存地址 for i in x: 因为是可迭代对象所以可以遍历出这个对象 print (i) print (list(x)) 也可以转换成列表再打印输出,注意!:这样会输出一个空列表, 因为这个对象用for循环遍历后,光标依然停在最后位置,后面什么 也没有所以为空,所想输出列表,则需要注释掉for循环操作 总结: filter类型的对象每次只能操作一次,使用一次
装饰器
def aaa(x): def y(*args,**kwargs): pass x() return y @aaa def x(y): pass x(...)
模块
import
from import
as
类
类名class ...:
类方法
构造函数
__init__
self
析构函数
静态方法
私有
私有属性
私有方法
继承
object
super()
子主题
面向对象
封装
继承
多态
正则表达式
需导入re模块
re.match()
re.search
正则字符
\w
\W
\s
\S
\d
\D
文件处理
open()
打开方式
r
w
a
文件路径
绝对路径
相对路径
读取文件
read()
子主题
进阶
数据库
SQL
子主题
模块
子主题
子主题
子主题
子主题
进阶方向
爬虫
web开发
大数据开发
办公自动化
运维
人工智能
Linux系统
有各自的编码表 能够相互转换
Unicode码表
最常用的两种编码格式
gbk码表
utf-8码表
例如: 你
转换成对应的编码 print (ord(′你′)) --20320
转换成二进制 print (bin(20320)) --0b100111101100000
转换gbk码表的编码
print (′你′.encode(′gbk′)) ---b'\xc4\xe3'
转换utf-8码表的编码
Python
快捷键
基础
六大类型
字符串str
编码
进制
二进制
0b
将十进制转换为二进制
bin()
手算二进制转换为十进制
对照112416
八进制
0o
十六进制
0d
ascill码
美国人使用 最多128
ISO-8859-1码
在ascill码的基础上增加到最多255位,增加欧洲国家适用
Unicode万国码
以上两种为背景作为改进 比较全面的码 包括简体中文
utf-8
统一编码,汉字占三个字节,每个字节占八位二进制码 几乎兼容世界上所有语言
中国自己的编码集,国标扩
GBK 国标扩
简体中文,汉字占两个字节 每个字节有八位二进制码
BIG5
繁体中文
内置函数
ord()
转换字符对应的编码 print (ord(′a′)) --97 print (′你′) --20320 编成八位是:0002 0320
chr()
转换编码对应的字符 print (chr(65)) --A
encode ()
对字符进行编码 print (′你′.encode(′utf-8′)) ---b′\xc4\xe3′
decode()
对编码进行解码成字符 x=b′\xe4\xbd\xa0′ print (x.decode('utf-8')) ---你
交互函数
输入input()
默认用户输入的是 字符串类型
输出print ()
其他类型转换为字符串
str()
字符串规则 与运算
用比较运算符时对比的是ascill码
字符串与字符串相加 表示拼接字符串
字符串与数字n相乘 表示复制n次字符串
可以使用成员运算符
字符串不可变原则
字符串操作
字符串的查找
find() 返回下标或-1
x="哈哈呵呵嘿嘿" if x.find(′呵′) == -1: pass
index() 返回下标或报错
查看某个字符在字符串中 出现的次数
count()
x.conut("你")
判断字符串中是否指定字符 结果返回bool类型
判断开头是否一致
startswith()
判断结尾是否一致
endswith()
判断字符串是否全是字母
isalpha()
判断字符串是否全是整数数字
isdigit()
判断字符串是否只有字母或者数字 ,又或者全是字母数字
isalnum()
判断字符串是否全是空格
isspace()
字符串的替换 因为字符串不可变 需要创建变量接收替换后的对象
replace()
分隔字符串 传入字符串里指定字符 变成逗号,作为分隔
从左边开始分隔 有第二个参数n 用作分隔n段 返回列表
split()
从右边开始分隔 效果同上
rsplit()
如果字符串中有换行符\n 则按照换行符作为分隔 返回列表
split lines()
将字符串中指定字符作为参数 分隔成三部分,返回一个元组 (字符 指定字符 字符)
partition()
rpartition()
用作文件的话以 . 作为参数可以分割成 ("文件名", ". ", "后缀名")
去除字符串两边多余字符 或者添加多余字符
去除字符串两边的空格或字符
strip()
去除字符串左边空格或字符
lstrip()
去除字符串右边空格或字符
rstrip()
指定长度字符串 添加空格
ljust ()
如果长度不够,用指定字符 填充,如果长度够或者超出, 则原字符串不变 相当于原字符放左边
rjust()
效果同上,但是填充字符 移到了左边 相当于原字符放右边
.center()
效果同上,但填充字符分配到两边 填充字符不对称优先填充右边
将一个可迭代对象中的元素 以指定字符拼接 之后转换成字符串
.join()
列表元组都可以 join(可迭代对象)
修改字符串字母大小写
整个字符串首字母大写
.capitalize()
每个单词首字母大写
title()
全部大写
upper()
全部小写
lower()
字符串格式化
format
f"...{...}..."
和混合使用
修改字符串连接符,默认空格
sep = ' '
修改输出字符串后,末尾是否换行 默认换行
end=' '
占位符
% %% %d %s %D %Y......
%x
a=255 print ("%x" % a) ---ff 十六进制
%s
字符串
%d
数字 %3d 表示保留三位数的数字,如果不够三位则用空格在数字左边填充 %-3d 效果同上,如果不够则用空格在数字右边填充
%f
浮点数 %2f 表示小数点后保留两位的浮点数
%%
表示对%原样输出 print ("我叫%%s,我%d岁了"% 19) ---我叫%s,我今年19岁了
name="张三" age=23 print ("我的名字叫%s,我今年%d岁了"%(name,age) sep=′ ′) 我的名字叫张三,我今年23岁了, 若有多个值,则后面用括号包括
转义字符 \
\t 表示制表符,制造空格
\n 表示换行符,制造换行
\\ 对\表示原样输出
r 字符串前加r表示字符串里原样输出
整数int
bool类型
判断为真返回: True
判断为假返回: False
函数
绝对值
abs()
最大值
max()
最小值
min()
求和
sum()
整数
其他类型转换为整数 int()
浮点数
其他类型转换为浮点数 float()
可使用算数运算符进行运算 可以使用比较运算符
列表list
其他类型转换列表 list()
列表操作
查
a=[6,16,23,"你好","hello"] print (a[2]) ---23 print (a[1:4]) ---[16,23,你好] print (a[1:4][2]) ---你好
查找元素在列表中出现的位置 找到返回索引 没找到报错
index()
x=[...] x.index(元素) print (x)
查看列表中某个元素出现的次数
count()
x.count(3)
用成员运算符查看列表中是否存在 指定对象
print (元素 in x) ---结果返回boll
改
a=[3,5,"你好",6,45] a[2]=7 print (a) ---[3,5,7,6,45]
增
列表末尾添加指定元素
append()
x.append(元素)
索引位置添加元素
insert()
x.insert(索引,元素)
删
删除指定元素
remove()
x.remove(元素)
弹出索引元素,且可将弹出的元素赋值给新变量
pop()
x.pop(索引) 若没有参数,默认弹出对象最后一个元素 可以把弹出的元素赋值到一个对象里 x=[1,9,5,7,8] y=x.pop(2) print (y) ---5
清空列表
clear ()
x.clear()
永久删除索引数据, 也能永久删除整个列表,变量,项目等
del
del x[3] del x
对原列表,和一个可迭代对象进行拼接 变成一个列表
extend()
a=[4,5,6] b=[4,57,9,23]或b=(4,57,9,23)或"...." a.extend(b) print (a) ---[4,5,6,4,57,9,23]
也可以使用加号➕实现两组列表的拼接
反转列表
reverse()
x.reverse()或x[::-1]
列表中相同元素排序
按照从小到大,从aA到zZ 进行排序
将原列表排序
.sort()
a=[1,3,5,4,2] a.sort() print (a) ---[1,2,3,4,5]
将原列表反排序
sort(sever=True)
a.sort(reverse=True) 将原列表反排序
将原列表排序后 赋值给一个新对象 原列表不变
sorted()
a=[1,3,2,5,4] x=sorted(a) print (a) print (x) ---[1,3,2,5,4] ---[1,2,3,4,5]
将原有列表反排序后 赋值给一个新对象 原列表不变
sorted(sever=True)
x=sorted(a,reverse=True) 反排序后赋值给新对象
用循环遍历列表
while循环遍历
x=[...] i=0 while i<len(x): print (x[i]) i+=1
原理: print (x[0]) print (x[1]) print (x[2]) ......
for循环遍历
for i in 可迭代对象: print (i)
带索引的for循环
enumerate()
a=[[1,2,3],[4,5],[6,7,8,9]] for i,b in enumerate(a): print ("第%d个房间有%d人" %(i,len(b)) ---第0个房间有3人 第1个房间有2人 第2个房间有4人
用列表推导式可以生成列表
a=[i for i in range(1,11)] a=[i fori in range(10) if i%2==0] a=[(x,y) for x in range(1,6) for y in range(10,20)]是一列元组组成的列表 [(1,10),(1,11)...(1,19)...(2,11),...(2,19)...(5,19)]
拷贝
浅拷贝
浅拷贝只能拷贝一维列表,有多维列表也 只能拷贝一维,内部列表不能拷贝
x=[...] y=x 指向同一内存地址 修改原列表,新列表也会被修改 叫做指向,赋值
x=[...] y=x.copy y=x[:] 或import copy y=copy.copy(x) 指向不同的内存地址 修改原列表,新列表不受影响
深拷贝
深拷贝拷贝多维列表全部拷贝 必须调用copy模块 copy.deepcopy()
import copy a=[1,2,[3,4,5],6,7] x=copy.deepcopy(a)
元组tuple
元组用()表示 如果只有一个元素 要在这个元素后面加逗号
可以使用加号➕实现两个元组的拼接
元组类型是不可变 类型只能查找 不可以增删改操作
index() 查找元素返回索引
count() 查找元素出现的次数
其他类型转换元组类型
tuple()
tuple(只能放入可迭代对象)
在一个元组里全是字符串元素时 可以使用join()方法来拼接 返回一个字符串类型
元组可以遍历 可以使用成员运算符
字典dict
使用{}包括 使用键值对的方法 x={key:value,key:value,key:value} key 键不允许重复,若不是重复则 后一个key会覆盖前一个key 字典是无序的
key键一般使用不可变数据类型,一般使用字符串类型 value值一般可以使用任何数据类型
字典的增删改查
字典的查找
通过下标来查找对应的值 x[key]
如果索引的key不存在 则报错
可以使用函数方法来获取
get()
x.get(键) 如果字典中不存在对应的键,则默认返回None 可以指定第二个参数,若不存在则返回第二个参数
添加元素
可以通过下标添加新的键值对
x[新键]=新值
修改
通过下标来修改
x[键]=值
删除元素
pop方法
弹出字典元素 x.pop(键) 也可以把弹出的元素的值 赋值给一个对象,只有值 y=x.pop[键] print (y) ---值
弹出字典元素 x.popitem() 也可以把弹出元素的键和值 赋值给一个对象,为元组类型是键和值 y=x.popitem() print (y) ---(键,值) 注:这种方法没有参数,弹出的元素 是字典中的最后一个键值对
del方法
通过下标永久删除字典元素 del x[键]
永久删除整个字典 包括变量和内存 del a
清空字典
清空整个字典, 使其变成空字典 x.clear()
字典的拼接
update()
x={1:2,3:4} y={10:20,30:40} x.update(y) print (x) ---{1:2,3:4,10:20,30:40} 等同于列表的extend()方法
加号也可以实现拼接
字典的遍历
遍历key
.keys() 是一个函数方法 表示字典x里的多个/所有key 返回由key组成的列表
for k in x: print (k) 或者 for k in x.keys(): print (k)
遍历value
.values() 返回由value组成的列表
for v in x.values(): print (v)
遍历键值对
.items() 返回由多个元组形式的键值对 组成的列表 [(key,value),(key,value),(key,value)]
for k,v in x.items(): print (k, '=', v)
用于交换字典中key与value位置 的字典推导式
y={1:2,3:4,5:6} x={v:k for k,v in y.items()} print (x) ---{2:1,4:3,6:5}
集合set
集合的介绍
集合里的元素不可以重复 用set()方法可以将对象去重 返回一个集合
集合里元素是不重复的
集合是无序的
集合不支持加法运算➕
{} 表示一个空字典 set() 表示一个空集合 要创建空集合时只能使用set()
集合操作
添加元素,因为集合是无序的 所以添加的元素位置不确定 x.add(元素)
.add()
删除元素
x.pop() 随机删除一个元素
x.remove(元素) 删除指定元素
清空集合
x.clear()
集合的拼接
将集合与另一个 可迭代对象进行拼接 返回一个集合类型 内存地址不变
x.update(可迭代对象)
将集合与另一个集合拼接 返回一个集合类型 一个新的内存地址新的对象
y=x .uinon( 集合)
集合的运算符
减法➖ 集合的差集运算 表示去掉重复的元素 显示剩下的不重复元素
a={1,2,3,4,5,6} b={4,5,6,7,8,9} print (a-b) ---{1,2,3} print (b-a) ---{7,8,9} 注意:a-b表示a的差集,b-a表示b的差集
按位与运算符& 集合的交集运算 表示去掉不重复的 显示重复的
print (a & b) ---{4,5,6}
按位或运算符 | 集合的并集运算 表示两个集合拼接 拼接后自动去重
print (a | b) ---{1,2,3,4,5,6,7,8,9}
按位异或运算符^ 表示将两个集合的差集进行拼接 集合a与b差集的并集
print (a^b) ---{1,2,3,7,8,9}
检测对象类型
type()
运算符
成员运算符
在 不在 的意思 判断对象中是否存在指定对象 结果返回bool
in 或 not in
可用于字符串,列表,元组,字典,集合 注意:成员运算符在字典中只能访问key不能 访问value
比较运算符
>, <,≥, ≤, ==,!=
算数运算符
+ - * / 取商// 取余% 乘方**
➕ 对字符串,列表,元组进行拼接
➖ 集合的差集运算
* 字符串,列表,元组的n个拼接
逻辑运算符
or 逻辑或
and 逻辑与
not 逻辑非
对值取反
逻辑运算符的短裤运算
or 1真2假选1真,1假2真选2真 ,1假2假算2假
and 1真2假算2假,1假2真算1假
按位运算符
$ | ^ ~
运算优先级
括号 正负 乘方 按位 乘除 商模 加减
扩展
变量 可以称之为对象
有数字,字母,下划线组成
常量,由全部大写字母组成 一般不常改动
一般变量名清晰简短,且能够大致知道 其含义
驼峰命名法
变量交换
a=1 b=2 x=a a=b b=x 则a=2 b=1
a,b=b,a
内存
查看内存地址函数
id(对象)
不可变数据类型(字符串,数字,元组) 修改后另存于一个 不同的内存地址
可变数据类型(列表,字典,集合) 修改后指向同一内存地址
斐波那契数列
占位
pass
JSON与eval 重点
eval() 将一个字符串 实现它原本的功能
a=′input(′请输入账号:′)′ b="1+1" 这是两个是字符串 然后: x=eval(a) y=eval(b) print (x) -----请输入账号: print (y) ------2
JSON 本质是一个字符串 可以将字典,列表,元组等类型 都变成字符串类型,是一个独立于 编程语言的编码格式,常用于前端 与服务器,数据库等以字符串内容 传送,传输
需要导入json模块 import json
json .dumps( x) 将对象变成JSON字符串
json .londs( x) 将对象从JSON字符串类型 还原成原来的内容
用eval() 也可以还原内容
Python 字符串 字典 列表,元组 转换成 ↓ ↓ ↓ json json字符串 json对象 json数组, 转换后都是字符串类型 是一个列表形式的字符串 元组也会变列表,所以元组要 再变回去的话,只能变回列表!
if 语句条件分支
if-if:
if-else:
if-elif-else
缩进
if 条件判断 : 若为True继续,若为False跳过 缩进后执行 else: 缩进后执行
a=[i if a<i: else:a]
if语句下可嵌套循环语句
循环语句
计数器
count
for in 循环
遍历一个可迭代对象 不断用迭代器next方法寻找下一个数据
可以遍历字符串,列表,元组,字典,集合等
带下标或者迭代次数的遍历 for i, j in enumerate(可迭代对象) i 表示下标或迭代次数 j 表示可迭代对象里的迭代元素
生成函数
range()
for...else 一般用于嵌套if语句
循环嵌套
矩阵
冒泡排序
while 循环
死循环
判断条件为True时不断执行
跳过当前循环
continue
结束循环
break
循环嵌套
外层循环控制有几行的数量 内层循环控制每行里的单个元素数量
矩阵
子主题
冒泡排序
子主题
三元运算符
循环语句下可嵌套if语句
函数
def x(h,j): return h+j print (x(3,5)) ---8
b=x(3,5) 相当于把x的调用赋值给b print (b) ---8
b=x 相当于给函数x起个别名b print (b(3,5)) ---8
函数的参数
声明函数后的参数叫做形参 固定的字符代替
函数调用的参数叫做实参
函数会吧实参按照位置 一一对应的把实参传递给形参 如果参数被指定的话,则不用一一对应
缺省参数,指定参数,默认参数 关键字参数,
def x(a,b,c=5): pass x(1,7) 若没传递第三个参数则默认为5 x(8,6,2) 若传递了则覆盖默认的参数,以传递的实参为准 注意:默认指定参数只能在形参中的最后面
def x(a,b,c) pass x(b=3,c=7,a=9) 可以在实参中指定参数,不用到位置传参
也可以将位置参数与关键字参数混合使用 注意:混合使用时,必须将位置参数放前面,关键字参数放后面
可变参数,
*args
接收多个位置参数 以元组形式保留
**kwargs
接收多个缺省参数,关键字参数 以字典形式保留
返回值
return
把函数的执行结果或别的东西 返回给函数本身,调用函数本身 的时候使用这个执行结果或别的东西
可以返回多个值,用逗号隔开,本质是一个元组 也可以返回列表,字典等
函数的文档注释
在函数被声明后,用 ''' '''且按回车,会在函数体中 有多行的文档注释,可以写这个注释 方便他人或自己理解阅读
用help() 可以查看函数的文档注释 help(x)
全局变量与局部变量
函数外的变量叫做全局变量,所有地方都可以使用 函数内的变量叫做局部变量,只有函数内可以使用 如果全局变量和局部变量同名,且在函数内修改, 则修改的不会影响到全局变量,如果要在函数内部 修改全局变量则要使用global
a="哈喽" def x(): pass global a a="你好" 在外部打印就是被函数内修改后的值 print (a) ---你好
查看全局变量函数globals()
函数内的变量叫做局部变量
查看局部变量函数locals()
函数的作用域
除了函数内的变量其他的都是全局变量 只要是函数内的变量都是局部变量,只作用于当前函数
使用函数递归
求1到n的和 n=n+(n-1)
def x(n): if n==0: return 0 return n+x(n-1) print (x(10)) ---55
求 1 到 n 的和 传入参数10 ❶ 10不等于0,不执行if语句的返回值 ❷ 返回10+ 把10-1也就是9作为参数再次被函数x调用 因为再次调用x(n),这个时候参数n是9,再次经过❶,❷后 为9+ 再次调用x(9-1), 然后 8+ x(8-1), 然后7+ x(7-1).... ❸ 直到n==0时,满足❶的条件,把所有相加的和再加上❶里返回的0 这个结果就是递归从 1~y 相加的和
def x(n): if n!=0: return n+x(n-1) else: return 0 print (x(10)) ---55
求1到n的阶乘 n! n=n*(n-1)
def x(n): if n==0: return 1 return n*x(n-1) print (x(10)) ---3628800
原理同上 注意:当n为1的时候,调用x(n-1)就走到了if语句中 返回值要设为1,不能设为0,因为任何数乘到零都为零
求斐波那契数列第n个数
def x(n): if n==1 or n==2: return 1 return x(n-2)+x(n-1) print (x(8)) ---21
从8开始分裂,分到最后,直到n等于2,或者n等于1时, 返回1,这样就分裂到最后有21个1相加,第八个数为21
回调函数
def x(a,b): return a+b def y(j,k,l): m=l(j,k) return m print (y(3,7,x)) ---10 函数y调用函数x
把一个函数当做另一个函数的参数
匿名函数
lambda
用来表达简单的函数 使用次数很少,基本使用一次 一般会使用在另一函数中
匿名函数名字 = 用匿名函数开头 参数 : 返回值x= lambda a,b:a*bprint (x(4,5))---20 def x(a,b,c): w=c(a,b) return w m=lambda j,k:j*k print (x(3,5,m)) print (x(3,5,lambda v,r:v+r)) ---15 ---8
匿名函数在sort排序中的使用
a=[ {"name":"张三","age":24,"分数":97,"身高":180}, {"name":李四","age":19,"分数":92,"身高":176}, {"name":"小王","age":25,"分数":87,"身高":182}, {"name":"小赵","age":20,"分数":100,"身高":175}, ] 这样的列表是无法排序的,因为列表里的字典没有排序规则,无大小之分 可以在sort()里传递第二个参数,key a.sort(key=lambda x:x[′age′]) 可以以age的值来进行排序 a.sort(key=lambda x:x[′分数′],reverse=True) 也可以分数排序,且为反排序 原理是sort()里的一个参数key是一个函数,这个函数的参数就是列表中的元素,也就是里面的字典,字典索引哪个key就用哪个key里的value进行排序
过滤函数
filter()
filter()函数是一个内置类,将一个可迭代对象一个过滤的作用, 有两个参数,第一个参数是函数,是操作对象的方法,第二个参数是被操作对象 返回的结果也是一个可迭代对象,是一个filter类型的对象 ages=[20,23,17,15,24,30,19] x=filter(lambda a: a>18, ages) 表示以ages为对象用匿名函数方法 过滤出大于18的元素,赋值给x print (x) 直接打印的话显示的是这个filter对象的类型和内存地址 for i in x: 因为是可迭代对象所以可以遍历出这个对象 print (i) print (list(x)) 也可以转换成列表再打印输出,注意!:这样会输出一个空列表, 因为这个对象用for循环遍历后,光标依然停在最后位置,后面什么 也没有所以为空,所想输出列表,则需要注释掉for循环操作 总结: filter类型的对象每次只能操作一次,使用一次
装饰器
def aaa(x): def y(*args,**kwargs): pass x() return y @aaa def x(y): pass x(...)
模块
import
from import
as
类
类名class ...:
类方法
构造函数
__init__
self
析构函数
静态方法
私有
私有属性
私有方法
继承
object
super()
子主题
面向对象
封装
继承
多态
正则表达式
需导入re模块
re.match()
re.search
正则字符
\w
\W
\s
\S
\d
\D
文件处理
open()
打开方式
r
w
a
文件路径
绝对路径
相对路径
读取文件
read()
子主题
进阶
数据库
SQL
子主题
模块
子主题
子主题
子主题
子主题
进阶方向
爬虫
web开发
大数据开发
办公自动化
运维
人工智能
Linux系统
有各自的编码表 能够相互转换
Unicode码表
最常用的两种编码格式
gbk码表
utf-8码表
例如: 你
转换成对应的编码 print (ord(′你′)) --20320
转换成二进制 print (bin(20320)) --0b100111101100000
转换gbk码表的编码
print (′你′.encode(′gbk′)) ---b'\xc4\xe3'
转换utf-8码表的编码