内置函数2 递归

lambda 匿名函数

  语法 lambda 参数;返回值

a = lambda n : n * n 
print(a)
 
#n = 2
#4
s = lambda x,y:x,y
print(s) 
#这个会报错,默认认为  x,y:x  是一对元组,y  没有传值,会报错

s = lambda x,y:(x,y)
print(s) 
#用括号括起来说明这是一个整体,就ok

sorted()  排序函数

  内置函数中提供了一个通用的排序方案

  

lst = ["聊斋", "西游记", "三国演义", "葫芦娃", "水浒传", "年轮", "亮剑"]
def func():
    ruturn len(lst) % 2
li = sorted(lst,key = func)
print(li)
# 聊斋 三国演义 年轮 亮剑 西游记 葫芦娃 水浒传
lst = [
    {'name':"汪峰","age":48},
    {"name":"章子怡",'age':38},
    {"name":"alex","age":39},
    {"name":"wusir","age":32},
    {"name":"赵一宁","age":28}
    ]
li = dorted(lst,key = lambda el : len(el['name']))
print(li)
#{'name': 'wusir', 'age': 32}, {'name': 'alex', 'age': 39},
# {'name': '章子怡', 'age': 38},
# {'name': '赵一宁', 'age': 28}, {'name': '汪峰', 'age': 48}]

filter()   筛选函数

  

lst = [
    {"name":"汪峰", "score":48},
    {"name":"章子怡", "score":39},
    {"name":"赵一宁","score":97},
    {"name":"石可心","score":90}
]
f = filter(lambda el : el['score'] < 60,lst)
print(list(f))

map

  一句话,分而治之

map (func1,map(func2,map(func3,map)))

递归

  递归函数有最大的深度是 1000,实际到 998 左右就会报错

  可以调整最大的深度,import sys        但是不建议这样做

二分法

  一句话 掐头去尾取中间

  二分法使用场景   有序序列

  

lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 ]
n - 66
left = 0
right = len(lst) - 1     #获取索引 索引从0 开始
while left <= right:    #边界,当右边的比左边还小的适合退出循环
    mid = (left + right)//2     #必须整除,索引没有小数
    if lst[mid] > n:
        right = mid - 1
    if lst[mid] < n:
        left = mid + 1
    if lst[mid] == n:
        print('找到了')
else:
    print('没有这个数')

递归来完成二分法

lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 , 238 , 345 , 456 , 567 , 678 , 789]
def func(n,left,right):
    if left <= right:
        print('哈哈')
        mid = (left + right)// 2
        if n > lst[mid]:
            left = mid + 1
            return func(n,left,right)
        if n <lst[mid]:
            right = right + 1
            return func(n,left,right)
        if n ==lst[mid]:
            print('找到了')
            return mid
    else:
        prinit('没有这个数')
        return -1

ret = func(66,0,len(lst) - 1)
print(ret)

 

  

posted on 2018-08-15 16:38 你说我记 阅读() 评论() 编辑 收藏

版权声明:本文为lzqrkn原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lzqrkn/p/9482310.html