python 递归函数
目录
递归函数
二分法
三元表达式
列表生成式
字典生成式
匿名函数
递归函数
直接或间接调用自己。递归函数必须有一个条件,终止无限循环。
1.直接调用
# def index(): # print('hello') # index() # # index() # 循环自己调用自己
2.间接调用自己
# def func(): # print('hello') # outer() # # def outer(): # print('world') # func() # # func() # 一直在调用两个函数

3.递归函数的两个阶段
1.回溯:问个问题,问题的程度越来越弱,最终会得到一个结果
2.逆推:从结果往回推最终的出结果
二分法
从中间开始,再从中间开始,知道获取到结果位置
1.列子:
# l = [1,2,3,4,5,6,7,8,9] # 列表中的数据必须按顺序 # num = 10 # def get_num(l,num): # if num not in l: # print('输入有误') # return # b = len(l)//2 # if l[b] < num: # mun_right = l[b+1:] # get_num(mun_right,num) # elif l[b]>num: # mun_left = l[:b] # get_num(mun_left,num) # else: # print(num) # # get_num(l,num)
三元表达式
三元表达式: 和if else相比较,就是条件成立做一件事,不成立做另一件事
语法结构:
值1 if 条件 else 值2 条件成立值1否则值2
x = 3 y = 2 res = x if x > y else y print(res)
列表生成式
# 名字的后面加"_nb" l = ['jason','egon','tank'] res = ['%s_nb'%name for name in l] print(res) # 名字后面有"_nb"的留下 l = ['jason_nb','egon_nb','tank'] res1 = [name for name in l if name.endswith('_nb')] # 不能够更else print(res1)
字典生成式
l1 = ['name','password','hobby'] l2 = ['jason','123','read'] dic = {i:j for i,j in enumerate(l2) if j != '123'} print(dic)
匿名函数
res = (lambda x,y:x+y)(1,2) print(res) func = lambda x,y:x+y print(func(1,2)) # "x,y"相当于函数的形参 "x+y"函数的返回值

浙公网安备 33010602011771号