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 [ab]cdef 匹配acdef或bcdef
9 abc[de] 匹配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 匹配结束位置,忽略多行模式

贪婪匹配与惰性匹配:以

hello world
为例

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

 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.二叉树的遍历

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

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

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

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

type(object)一般只传入一个参数,输出object对应的类

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

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

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

你可能感兴趣的:(学习,笔记)