Python学习笔记:正则表达式、逻辑运算符、lamda、二叉树遍历规则、类的判断

1.正则表达式如何写?

|----|----------------------|-------------------------------|
| 序号 | 实例 | 说明 |
| 1 | . | 匹配任何字符(除换行符以外) |
| 2 | \d | 等效于0-9,匹配数字 |
| 3 | \D | 等效于\^0-9,匹配非数字 |
| 4 | \s | 等效于\\t\\r\\n\\f,匹配空格字符 |
| 5 | \S | 等效于\^\\t\\r\\n\\f,匹配非空格字符 |
| 6 | \w | 等效于A-Za-z0-9,匹配单字字符 |
| 7 | \W | 等效于\^A-Za-z0-9,匹配非单字字符 |
| 8 | abcdef | 匹配acdef或bcdef |
| 9 | abcde | 匹配abcd或abce |
| 10 | 0-9\a-z | 匹配数字0-9\小写字母a-z |
| 11 | \^0-9\\^a-z | 匹配非数字/非小写字母 |
| 12 | abc? | 匹配ab或abc |
| 13 | abc* | 匹配ab/abc/abcc......0个以上的c |
| 14 | abc+ | ab+1个以上c |
| 15 | \d{3} | 完全匹配3位数 |
| 16 | \d{3,5} | 匹配3位、4位、5位数 |
| 17 | \d{3,} | 匹配3位以上的数 |

边界匹配:不消耗匹配字符串中的字符

|----|-----|----------------------------------------|
| 序号 | 实例 | 说明 |
| 1 | ^ | 匹配开始位置,多行模式匹配每一行的开始,如^abc,则在开始位置匹配abc |
| 2 | | 匹配结束位置,如.\*sh,在结束位置匹配agfiasfush |
| 3 | \b | er\b可以匹配never中的er,但是不能匹配verb中的er |
| 4 | \B | er\B可以匹配verb中的er,但是不能匹配never中的er |
| 5 | \A | 匹配开始位置,忽略多行模式 |
| 6 | \Z | 匹配结束位置,忽略多行模式 |

贪婪匹配与惰性匹配:以*<div>hello world</div>为例*

|----|--------|-----------------------------------------|
| 序号 | 实例 | 说明 |
| 1 | <.> | 贪婪匹配模式,得到的是*<div>hello world</div>* |
| 2 | <.?> | 惰性匹配模式,得到的是*<div>或者</div>* |

2.常用正则表达式实例

|-------|----------------------------------------------------|-----------------------------|
| 序号 | 实例 | 说明 |
| 用户名 | ^a-z0-9_-{3,16} | 只能包含小写字母、数字、下划线、-、至少3位至多16位 | | 密码 | \^\[a-z0-9_-\]{3,18} | 只能包含小写字母、数字、下划线、-、至少3位至多18位 |
| 十六进制值 | ^0-9A-F{6}|0-9A-F{3} | 以#开头,0-F,一共6位或者3位 | | 电子邮箱 | \^(\[0-9a-zA-Z_-.\])@(\[0-9a-z\]).(\[a-z.\]{2,6}) | |

3.Python的逻辑运算符

3.1 not

not True:False

3.2 and

True and False : False

and是一种短路操作符,从左到右解析,确认结果即停止

0 and 18:0

15 and 18:18

4 and 3: 3

3.3 or

    1. True or True : True

    2. True or False : True

    3. False or True : True

    4. False or False : False

同样or也是一种短路操作符,确认结果即停止

4 or 3 : 4

3 or 0 : 3

0 or 3 : 3

4.lamda表达式

lambda表达式是一种匿名函数,表达式可以作为参数传递给其他函数或直接被调用。

复制代码
add = lambda x, y: x + y
print(add(5, 3))

5.二叉树的遍历

  • 前序遍历:先输出父节点,再遍历左子树,然后遍历右子树:ABDEGCF
  • 中序遍历:先遍历左子树,再输出父节点,然后遍历右子树:DBGEACF
  • 后续遍历:先遍历左子树,再遍历右子树,最后输出父节点:DGEBFCA

6.Type()和isinstance()的区别

isinstance(object, classinfo)传入两个参数,并判断object是否属于classinfo对应的类

type(object)一般只传入一个参数,输出object对应的类<class'main.A'>

type(object) == A 实现与isinstance类似的功能但是区别在于:

1.type只接收一个参数,不但可以判断变量是否属于某个类型,而且可以得到未知的参数变量所属的类型;而isinstance只能判断是否属于某个已知类型,不能直接得到变量未知的所属的类型

2.isinstance可以判断子类实例对象是属于父类的;而type会判断子类实例对象和父类类型不一样

相关推荐
依然范特东16 分钟前
强化学习笔记6--IS、PPO、TD、DQN、Actor-Critic
笔记·算法
zzzll111117 分钟前
0基础入门大模型:一份清晰的学习路线图
人工智能·学习·chatgpt
正经人_x1 小时前
学习日记48:DenseCLIP
学习
DevangLic2 小时前
monkeycode-使用说明
学习·ai
Mxzx品牌2 小时前
佛山招聘软件哪个好:【帅聘网】匹配度高
笔记·其他·生活
九硕智慧建筑一体化厂家2 小时前
无线动能开关|烘焙后厨防潮免布线照明控制方案
运维·笔记·智慧城市
red_redemption2 小时前
自由学习记录(211)
学习
ZZHow10243 小时前
PyTorch深度学习入门笔记(小土堆)P7-14
人工智能·pytorch·笔记·python·深度学习
九硕智慧建筑一体化厂家3 小时前
直流照明|档案库房专用照明,防紫外线、防纸张老化、适配24小时值守
运维·网络·笔记·智慧城市
ThsPool3 小时前
【ENVI二次开发学习整理 02】IDL语言基础与程序设计
学习·中间件