一、三元运算符
三元运算符也称三目运算符,就是if .....else.....语法糖
前提:if 和 else 只有一条语句
例:a = 20
b = 30
res = a if a > b else b #求最大值
三元运算符的结果不一定要与条件直接有关系
二、推导式:列表(元组)与字典的转换语法糖
1、列表(元组)推导式
dic = {'a':1,'b':2,'c':3}
res = [(k, v) for k , v in dic .items()]
print(res) #[('a',1),('b',2),('c',3)]
元组直接在得到的列表的基础上tuple转一下就可以了
2、字典推导式
l = [('a',1),('b',2),('c',3)]
res = {k: v for k ,v in l}
print res #dic = {'a':1,'b':2,'c':3}
案例:
range 可以被推导为列表
res_ls = [arg for arg in range(10)]
print(res) # [0,1,2,3,4,5,6,7,8,9]
迭代出可解压为单列容器的就可以推导出字典
res_dic = {v: k for k, v in enumrate('abc')}
print(res_dic) #{'a': 0 , 'b' : 1 , 'c' : 2}
3、列表推导式格式:
[k for k in iter if 筛选条件]
三、递归:回溯与递推
回溯:询问答案的过程
递推:推出答案的过程
1、前提:
回溯到一个有具体结果的值,开始递推
回溯与递推的条件要有规律
2、递归本质:函数的自我调用
def a():
global count
count += 1
if count > 50:
return
a()
a() #自己调自己
def b():
c()
def c():
d()
def d():
b()
b() #间接调自己,一旦形成循环调用,就产生了递归
四、匿名函数:没有名字的函数,没有函数体,只有一个返回值
语法:lambda 参数列表 一个返回值表达式
lambda x,y : x + y
应用场景:
1、匿名函数函数地址可以被一个变量接受,该变量就可以作为函数名来使用,但就违背了匿名的初衷
2、结合内置函数来使用:内置函数某些参数需要一个函数地址,可以赋值一个有名函数名,也可以直接赋值匿名函数