1.三元表达式
符合python语法的表达方式(形式,公式)称之为表达式
三元,三个元素
总体就是,由三个元素组成的表达式
目的就是简化书写,既然是简化就必然有局限性
res=True if age>=18 else False
只能简化只有两个分支的if条件,并且这个判读无论是否成立都必须返回一个值
2.递归
递归指的是递归调用,简单的说就是一个函数在执行过程中,直接或者间接的调用了该函数
递归时可能会出现一些错误,在调用函数时超出了最大递归深度
当调用函数时,会将函数的代码存储到栈区,然后开始执行,这个过程称之为入栈
python为了防止递归太多导致内存溢出,所以给递归加上了深度限制,默认为1000
递归调用本质上就是在循环执行代码,与普通循环不同的是,函数调用会产生一系列内存开销,所以会导致内存溢出,而循环没有这个问题
如此一来,则表示所有递归能干的事情,递归也可以干
在使用递归时,要注意
1.一定要在某个条件满足时,结束循环调用
2.循环调用的次数不能超过系统的限制
3.每一次执行都应该使问题的规模减少,否则就是无用的循环
4.python中没有尾递归优化机制(使得递归调用占用开销更小
在使用递归完成遍历所有元素(不知道有几层)时,可以发现递归使用起来,代码量更少,而且代码结构能加清晰
什么时候使用递归:
你不知道要循环几次
二分查找法:
原理先将整体分为两半,然后取出中间值,与你要查找的目标进行比对,如果你要找的比中间值大去右边,反之去左边
1.先得到一个中间值,比较是不是你要找的,如果是直接返回
2.如果不是,那就把列表拆成两半,进行比较
3.如果你找的比中间值大,找右边
如果你找的比中间值小,找左边
3.匿名函数
匿名指的就是没有名字
其最明显的特点是:有名字的值可以多次使用,多次访问
而没有名字的值,只能临时使用一次,用完就没了
lambda a,b,c:具体代码
只能有一行表达式
匿名函数与有名函数的区别:
关键字是lambda
关键字不需要括号,并且支持所有类型的参数
名称空间与作用域关系完全相同
函数体中不能写return,会自动将执行结果返回
函数体只能有一个表达式,且不能换行
匿名函数什么时候使用:
当你的函数的函数体只有一行表达式时并且仅使用一次时就可以作为匿名函数
更多的是与内置函数联用(max,min,sorted,map,filter,reduce)