三元表达式,递归,匿名函数,常用的内置函数

三元表达式
符合python语法的表达方式(形式,公式)称之为表达式
三元:三个元素
总体:由三个元素组成的表达式
其目的是为了简化书写,既然是简化就必然有局限性
三元表达式只能帮你简化仅有两个分支的if判断,并且这个判断无论成立与否都必须返回一个值


递归
指的是递归调用,简单的说就是一个函数在执行过程中又直接或间接的调用该函数本身

递归时可能出现以下错误:
在调用函数时超出了最大递归深度
python为了防止递归太多导致内存溢出,所以给递归调用加上了深度(次数)限制,默认为1000
当调用函数时会将函数的代码存储带栈区然后开始执行,这个过程称之为入栈

递归调用本质上就是在循环执行代码,与普通循环不同的是,函数调用会产生一系列内存开销,所以就会导致内存溢出
而循环则没有这个问题
如此一来,则表示所有递归能干的事情循环都能干
在使用递归时要注意:
1.一定要在某个条件满足时结束循环调用
2.循环调用的次数不能超过系统的限制
3.每一次执行函数都应该使问题的规模减少,否则就是无用的循环
4.python中没有尾递归优化机制(使得递归调用时占用的开销更小)
在使用递归完成遍历所有元素(不知道有几层)时,可以发现,递归使用起来代码量更少,并且代码结构更加清晰
什么时候该使用递归:
你不知道到底要循环几次

递归之二份查找法
二分查找法
分班查找
折半查找
先将整体分为两半
然后取出中间元素,与你要查找的目标进行比对,如果你要找的比中间值大请走右边
如果你要找的比中间值小请走左边
1.先得到一个中间值,比较是不是你要找的,如果是直接返回
2.如果不是 那就吧列表拆为两半,进行比较
3.如果你要找的比中间值大找右边
如果你要找的比中间值小找左边

匿名函数
匿名值的就是没有名字
其最明细的特点就是,
有名字的值可以多次使用,多次访问
而没有名字的值,只能临时使用一次,用完就没了
匿名函数与有名函数的区别
关键字为lambda
参数不需要括号,并且支持所有类型的参数
名称空间与作用域关系完全相同
关键字lambda
函数体中不能写return,会自动将执行结果返回
函数体只能有一个表达式且不能换行
匿名函数什么时候使用:
当你的函数的函数体只有一行表达式时并且仅使用一次时就可以作为匿名函数
更多的是与内置函数联用(max,min,sorted,map,fileter,reduce)
当默认的比较方式无法满足需求时,就可以通过传入一个函数来决定用什么比较

map 映射 filter 过滤 reduce合并

map 用于从一个可迭代对象中取出所有数据,进行一系列操作后 在放回新列表中
filter 用于从一堆数据中过滤一些不满足条件的数据,提供一个函数,要函数的返回值是bool类型 True表示要保留,False就过滤掉
从functools中拿到一个reduce
reduce 是把列表中的数据进行合并 每次会传给你两个值n和n+1
posted @ 2019-01-17 16:29  777ijBGly-  阅读(179)  评论(0编辑  收藏  举报