小白学python----- 递归与匿名函数

一.递归

递归就是函数地递归调用,在函数调用地过程中直接或间接地调用了本身

递归分为两个阶段

回溯

一层一层往下找,是一个重复地过程,每一次重复,问题地规模应该逐渐减少,直到接近最终地结果

注意:一定要满足某种条件下进行回溯,否则就是无限递归

递推

就是一层一层往回推出结果

结论:

1.递归一定要有一个明确地结束条件

2.每进行一次递归,问题地规模也要相应地减少

3.在python中没有尾递归优化

例子一
items=[1,[2,[3,[4,[5,[6,[7,[8,[9,[10]]]]]]]]]]
def tell(l):
    for item in l:
        if type(item) is not list:
            print(item)
        else:
            tell(item)
tell(items)

列子二
算法:是如何高效率地解决某一个问题地方法/套路
二分法
nums=[11,22,34,56,65,76,77,86,89,90,97,101,105,135,146,178,201]
find_num=100

def func(nums,find_num):
    print(nums)
    if len(l) == 0:
        print('not exists')
        return
    mid_index=len(nums)//2
    if find_num>nums[mid_index]:
        nums=nums[mid_index:]
        func(nums,find_num)
    elif find_num<nums[mid_index]:
        nums=nums[0:mid_index]
        func(nums, find_num)
    else:
        print('find it')

func(nums,find_num)

二.匿名函数

匿名函数lambda 就是没有函数名地函数,并且是一次性的,除了没有名字其他都与有名函数一样调用

总结:

1.匿名函数的目的就是一次性使用,是没有名字,如果赋值给一个变量名那就没有意义了

2.匿名函数的参数规则,作用域关系与有名函数一样的

3.匿名函数的函数体通常是一个表达式,必须要有一个返回值,可以不用写return ,自带return效果

4.匿名函数通常不单独使用,而是与各种内置函数一起使用,如max,min,sorted,map,reduce,filter

dic={'tom':2000,
     'bob':4000,
     'may':8000,
     'mary':5000}
print(max(dic,key= lambda x:dic[x]))
#因为是字典,所以取最大值取出的是键,而不是对应的值
# max(key=)改变max函数比较依据


print(min(dic,key= lambda x:dic[x]))

print(sorted(dic,key= lambda x:dic[x],reverse=True))
sorted(reverse=False)#默认是False  就是升序 reverse=True就是降序

map(函数,值)  映射
l=[1,2,3,4,5]
res = map(lambda x:x**2,l)
print(list(res))

reduce()合并
from functools import reduce
res=reduce(lambda x,y:x+y,range(1,101),0)
print(res)

filter()过滤
相当于for循环取出每一个人名,然后传给匿名函数,将调用匿名函数返回值为True地那个人名给留下来

三.三元表达式,列表生成式,字典生成式

一.三元表达式
仅用于:
1.条件成立返回一个值
2.条件不成立返回一个值

def max2(x,y):
    return x if x>y else y
print(max2(10,2))

列表表达式
l=[i for i in range(100)]
print(l)

l=['alex','lqz','yyh']
l=[i+'_DSB' for i in l]
print(l)

字典生成式
keys=['name','age','sex']
vals=['tom',18,'male']
dic={k:vals[i] for i,k in enumerate(keys)}
print(dic)

猜你喜欢

转载自blog.csdn.net/qq_42721964/article/details/81359502