函数的递归:函数在调用阶段直接或者间接的又调用自身
递归的两个阶段:
1、回溯:就是一次次重复的过程,这个重复的过程必须建立在每一次重复问题的复杂度都是应该下降的,直接有一个最终的结束条件(这个结束条件是必须的,否则就不会结束,直到到当前递归的最大层数然后报错)
2、递推:一次次往回推导的过程
如何查看当前递归的最大层数:
import sys
print(sys.getrecursionlimit())
# 如果想自定义最大层数, 也可以对括号中进行传参
二分查看算法:二分算法的推导过程
三元表达式:
res = x if x > y else y
# 如果if后面的条件成立就返回if前面的值,否则就返回else后面的值
生成式:
列表生成式:是python内置的用来生成list的生成式,在写列表生成式的时候把要生成的元素放在最前面,后面跟着for循环,就可以将list创建出来了,当前for 循环后面还可以跟着if判断,这样我们就可以筛选出我们想要的元素了,这是一种十分便捷的方法
字典生成式:
list4=[('name','zhagnsan'),('age',22),('phone',110)]
#for循环遍历列表,将列表中小元组的key和value取出,作为字典的key:value
dict_1={key:value for key,value in list4}
print(dict_1)
匿名函数:lambda x: x * x
关键字lambda表示匿名函数,冒号前面的x表示函数的参数。
匿名函数有一个限制就是只能是一个表达式,不用写return,返回值就是该表达式的结果。、
好处:匿名函数是没有名字的,所以就不用担心会产生函数名字的冲突。此外匿名函数也是一个函数对象,也可以将匿名函数赋值给一个变量,再利用变量来对这个匿名函数进行调用。
常用的内置函数:
max():返回最大值
filter():基于for 循环的筛选出结果只为True的参数,并返回
min():返回最小值
reduce():这个需要导入:from functools import reduce 在reduce中第三个参数可以传入一个初始化的参数,用来当作初始值进行计算
zip():拉链,基于for循环实现的
map():映射
sort():排序,可以设置升序和降序