导图社区 Python思维导图
这是一篇关于Python思维导图,Python 思维导图是一种使用 Python 编程语言创建的图形化工具,用于展示和组织思维和信息。它们通常以树状结构呈现,有助于提高理解和记忆能力。
编辑于2023-11-02 19:50:54Python
Python基础知识
Python基本运算
% 取余数
// 求整
Python变量
数字
十六进制整数-0x开头(范围0-9,a-f 共16个)
八进制整数-0o开头(范围0-7,共8个
二进制整数-0b开头(范围0-1,共2个)
注:各进制之间可以用科学计算器直接换算
复数
x.real 表示实部
x.imag 表示虚部
字符串
注意字符串的相加,比如‘1"+’1“=”11“
就算是元组或列表或集合,也可转成字符串 #论字符串的强大功能
在Unicode里,'A'到‘Z' 65-90, 'a'到’z' 97-122
id(x)-显示x这个变量的内驻地址
字符串可以做加、乘法,不能做减、除法
加法对像是字符串,乘法对像只能是数字类型
字符串格式化 '%[-][+][0][m][.n]格式字符‘%x
-:指定左对齐输出
+:对正数加正号
0:指定空位填0
m:指定最小宽度
.n:指定精度
格式字符:s字符串 c单个字符 d十进制整数 o八进制整数 x十六进制整数 e指数(基底写为e) E指数(基底写为E) f或F 浮点数且默认小数部分为6位
字符串常用方法
find()与rfind() 从左搜索与从右搜索 x.find("要找的对象",[a]) (如果有a则默认为a到最后,左搜索与右搜索都是如此。如果不存在搜索结果则返回-1; index与rindex()与上面用法一样,唯一不同是如果不存在则抛出异常
count()-x.count("要计算次数的字符串")
split与rsplit -以指定字符为分隔符,来分割字符串并返回新的列表。x.split("指定字符",[最大分割次数])
对于split()和rsplit(),如果不指定分割符,则字符串中的任何空白符号(包括空格,换行符,制表符等),都将被认为是分割符,返回包含最终分割结果的列表中
partition()及rpartition().partition默认只分割一次,分割标志本身也是单独一部分。split如果没有指定数字,碰到几次分割标志就分割几次,且分割标志就完全没有了。
如果指定的分隔符不在原字符串中,则返回原字符串和两个空字符串。
join() - y.join(x) 把y加到x里
lower(),upper(),capitalize()-每个首字母大写 title() 每句道字线大写 swapcase() 用法: x.lower().etc
replace() 用法 x.replace("要被换的部分",“要换上的部分”)
maketrans(),translate() - maketrans 用来生成字符映射表, translate用来处理字符串
子主题
strip(),lstrip()与rstrip(), 用法x.strip()
如果()里面没有空格,则默认删除两端或某一端的空白字符
(“指字字符”),则删除两端或某一端的连续指定字符
eval() 用法,就是把括号里的东西转成数字并求值,比如
in 和 not in 比如“y"in"x", 最后的结果就是True或False
startswith()与endswith() 用法x.startswith("想确认的那个字符,[指定字符开始]) 或是 x.startswith("想确认的那个字符,[指定的开始位置],[指定的结束位置])
isalnum()意思就是is there alpha or number isalpha(),isdigit(),isspace(),isupper(),islower() 用法 '要确认的字符串们。isalpha() 结果只会是TorF'
center(),ljust(),rjust() 用法是centre(里面是想要的新字符串的长度,也可以缺省,然后就是万一有多,你想填的字符串) 用法是 x.center(可缺省的字符串长度,可缺省的填空符号)
正则表达式
位运算
|(按位或) ^(按位异或) &(按位与) <<(向左移位) >>(向右移位 ~(按位取反)
顺序结构
选择结构
单分支选择结构(if )-符合条件就往下执行语句块
双分支选择结构 (if else)-语句块1和语句块2,总有一个会执行,且只会执行一个
多分支选择结构(if,elif,elif...else;),在这么多个语句块中,总有一个且只有一个会执行。而且注重一下,在各种else的条件判断中,都隐含了一个条件,就是当执行到它的时候,实际已经排除了上面的条件,比如 if n>5,elif n<3, 实际上当轮到n<3时,已经隐含了n<=5,否则 if的那个语句块就已经执行了。
选择结构的嵌套
循环结构
for循环
while循环
for循环与while循环的区别:for循环在range里就会设变量的起初值,终值与步长,所以不需要预设变量,也不用费心变量的变化,但是while要预设变量,而且要循环语句块要设置变量的变化,否则就陷入了死循环。
水仙花数,水仙花数(Narcissistic Number),也称为自恋数、自幂数、阿姆斯壮数,是一种特殊的自幂数。水仙花数是指一个n位数,它的每个位上的数字的n次幂之和等于它本身。具体而言,对于一个n位数 abc...,如果满足以下等式: a^n + b^n + c^n + ... = abc...
break 与 continue, 它俩可以出现在循环或是选择结构中,当它俩出现时,break表示为直接跳出这个结构的这一层,往下move on. continue表示又回到这个结构,再行新一轮的再战。
死循环
异常处理
异常种类:a.语法错误,可被编译器发现,不是啥大问题 b.运行错误,运行会报错,比如輸入数据类型不正确,序列下标越界,除数为0等 c.逻辑错误 比如算法不正确,语句顺序错误等 a与c都是致命错误,得排除错误才能运行b是异党,可控的
try... except 你担心它会出现啥 异常,就事先用一个选择语句兜住它。
try...except...else
except语句捕获多种异常 try:except 1...except 2...else
一个欢喜大结局 finally:+无论如何都会执行的代码
Python序列
元组,请注意它的序列不可变,所以不能删除部分内容
赋值
变量名=(元素们)(直接赋值)
也可用tuple()函数将其他类型的数据转换为元组
tuple('hello')=('h','e','l','l','o')
tuple([-5,4,3.14,8,-7.6])=(-5,4,3.14,8,-7.6)
删除
del删除整个元组,但不能删除部分元素
列表
创建
变量名=【元素们】(就是直接赋值的方法)
也可用list()函数将其他类型的数据转换为列表
list(range(1,10,2))=[1,3,5,7,9]
list("study hard")=['s','t','u','d','y',' ','h','a','r','d'](注意这里的空格也占了一个要素)
增加
x.append("要增加的元素")-在结尾添加 x.extend 与x.append差不多 x.insert(要插入的位置数,要插入的元素)
删除
del 列表名 或 del列表索引位置数 (删除该位置上的元素) remove('指定的元素')-删除列表中首次出现的指定元素
查找与访问与更改某元素
用索引与切片器来访问与更改 也有反索引-元组名.index("里面的某个元素",【start,stop]】)-获取指定元素首次出现的位置 成员资格判断 :用in 和 not in
排序 列表名.sort() -这个是正序 列表名.sort(reverse=True) 这个是逆序 列表名.reverse() 这个是顺序倒一下
常用内置函数
关系运算 ><啥的
zip函数
ccount() 列表名.count("要count的元素")
集合,无序可变,元素不许重复
创建
变量名={集合的元素们}(直接赋值)
用set()函数将列表、元组等转成集合
增加
集合名。add(想增加的元素)
删除
用del 集合名 -全删,删干净了 集合名。remove(想删的元素内容) 集合名,clear()-严格意义它不是删除是清除,使这个集合成为一个空集合
以上的三种类型中的元素可以包括其它的类型,比如【{1,2,3},1,(1,2),【1,2,3】】,你看这个元组的元素构成就包括了这三种性质的元素 以上三种类型都支持里面只有一个元素,也都支持里面啥都没有,但是当{}时,它的默认类型是字典,但是当元组里只有一个元素时,必须在元素后再加一个逗号消除歧义。
字典-它是无序配对(关于有序或是无序,可以有一个==test
创建
变量名={字典的健名和键值们}(就是直接赋值的方法)
使用内置函数dict()通过已有数据快速创建字典
根踞给定的键-值对来创建字典
读取
字典名["某个键名"]-用来读取这个字典里面该键名对应的键值 字典名。get("某个键名‘或某些键名),用来读取这个字典里这个或这些键名对应的键值 字典名.items() - 将字典通过“键-值配对”这种列表的形式显示出来 字典名.keys()-将字典的键名显示出来 字典名.values()-将字典的键值显示出来
添加元素
字典名[要添加的键名]=键值 (直接添加) 字典名[要添加的键名]=字典名.get(键值) append添加键值-前提是已有现存键值,它就会继续添加,形成一个键值的列表(即不是取代已有键值而是继续往上加) update-已知有两个不同的字典 那a.update(b)就是用b来update a, 变更的是a的值
一些通用操作
切片器
使用条件:我的个人理解,有序的才能使用切片器,并且只要是有序的东西,里面的元素就一定可以重复
适用范围:列表,元组,字符串,range对象等
构成-开始位置,截止位置,步长
[::]三个数全缺省,默认为每一个元素 [::-1]默认为逆序输出每一个 [a:b]只有二个数,默认缺省第三个数
作用
1.查询-查询时不要害怕,就算列表越界也不报错,它就返回一个空列表 2.赋值(也就是修改或增加)比如列表等 3.删除(赋值为一个空的列表即可)
len()命令与min(),max()命令等
适用范围,同切片器
函数
return只适用于函数定义中的返回,当函数没有return()语句或者执行了不返回任何值的return语句时,则默认它返回空值
当函数调动时,当实际的函数参数是一个序列时,调用时是f(*序列名)
如果使用字典对象作为实参,则默认使用字典的“键名”
如果需要将字典的“值”作为参数,则需要调用字典的values()语句。
lambda表达式:比如,如果要先定义一个x,再来一行求x/2, 就有两行,太烦了,就定义一个lambda x,x/2,一行就搞定了。这里的lambda有点像字符串表达式里的“%”%的感觉,就是调用自身
文件
分类:文本文件与二进制文件
文件创建并打开文件:文件对象名=open(文件名[,打开模式,【,缓冲区】]
r:只读 -前提是文件存在,否则抛出异常 w:只写不读,如果不存在就创建,存在就清空内容 a:追加模式(可读,不存在则创建,存在就追加内容) b:二进制模式(以字节方式操作) +:读写模式,可以同时读写 缓冲区数值为0就不缓存,1就缓存,如>1则表示缓冲区大小,默认缺省则缓存
关闭文件,保存缓冲的进到正式文件 f.close()
文本文件
读取 操作对象名.read(你想它读的长度) 注意:光标在哪读到哪,比如重复两次f.read(10),第一次读0-10个字节,第二次读第11-20个字节
对光标指针定位。 文件操作对象.seek(想定的位置数),如果缺省则为0,即开头
二进制文件
pickle模块-二进制文件序列化
面向对象设计
类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法,对象可以包含任意数量和类型的数据
通过继承创建的新类称为“子类”或派生类”,方法比如 classa people(): -父类 class student(people) 就是在儿子的括号里带上爸爸。 类的继续还可以一个子类同时继续两个或多个爸爸类,比如 class people() -父亲 class speaker()-父类 class 儿子名(people,speaker) 还可以方法重写,也就是儿子继承了爸爸的全部性质,但如果某条性质不满意,还可以儿子单独写一条,推翻爸爸的继承。
面向对象,就是重点放在数据与函数而不是面向过程(流程,逻辑顺序)上
调用函数的实形比起函数本身的形参一样多,为啥,因为调用函数,这个调用的行为本身就需要创建一个类的实例对象,该“类的实例对象”就是第一个参数
网络编辑
socket
Python Internet 模块
标准库和三方库
turtle库
random库
下载及安装第三方库:a.用pip可以搞定95%以上 b。自定义安装-去第三方库的主页下载和安装,一般用于在pip中尚无登记或安装失败的第三方库 c.文件安装 利用 。whl文件安装,执行pip install XXX.whl命令。
三方库里挺有用的程序代表们介绍 a. PyInstller -在Windows,Linux系统下把源文件打包成可执行文件 b. Jieba-中文文本分割
浮动主题
参加婚礼成员
双方家长
最重要
伴娘
伴郎
男花童
女花童
宾客
司仪
证婚人