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"函数的返回值

 

posted @ 2020-03-30 15:41  zhuang6  阅读(146)  评论(0)    收藏  举报