python全栈脱产第12天------函数的递归、三元表达式、列表生成式、字典生成式、匿名函数
一、函数递归
定义:函数的递归调用是函数嵌套调用的一种特殊形式,在调用一个函数的过程中又直接或是间接地调用该函数本身,称之为函数的递归调用
递归调用的两个阶段:1.回溯:一次次递归下去,需要注意每一次重复问题的规模都应该有所减少,直到逼近一个最终的结果,即需要一个结束的条件
2.递推:往回一层一层推算出结果
算法:高效地解决某一个问题的方法/套路
二分法:在一个从大到小或是从小到大排列的一个列表中找一个数,每次都与列表的中间的那个值作比较,然后截取可能存在需要寻找值的一边列表继续寻找,直到找到。
二、三元表达式
在条件成立的情况下返回一个值,不成立的情况下返回另一个值,if......else......
三、列表生成式
用途:列表添加减少值
names=['alex','lqz','yyh','fm']
l=[]
for name in names:
res=name+'DSB'
l.append(res) #l=[name+'DSB' for name in names]
四、字典生成式
用途:用于两个列表组合成一个字典,其中一个列表变为key值,一个变为value
keys=['name','sex','age']
values=['egon','male','18']
dic={}
for i,k in enumerate(keys):
dic[k]=values[i] #dic={k:values for i,k in enumerate(keys)}
五、匿名函数
定义:就是没有名字的函数
用途:用于仅仅一次使用的场景,没有重复使用过的必要
精髓:没有名字,绑定名字是没有意义的
用法:与内置函数一起使用,在语句前面加lambda
max、min、sum:都是用for循环来实现,返回一个结果当做依据
方法:sorted:排序,从小打到排序,末尾加上reverse=True
map:把一个列表按照我们自定义的映射规则映射成个新的列表
filter:从一个列表中过滤出符合我们过滤规则的值
原理:相当于for循环取出没一个人名,然后传值给匿名函数,将调用匿名函数返回值为True的那个值留下来
reduce:把多个值合并成一个值