一. 匿名函数

  为了解决一些简单的需求而设计的一句话函数.  lambda表示的是匿名函数. 不需要用def来声明, 一句话就可以声明出一个函数

   语法:    函数名 = lambda 参数: 返回值

a = lambda x, y: x + y  # lambda 匿名函数 一行搞定一个函数. 但是, 不能完成复杂的函数操作
print(a(2, 5)) #
print(a.__name__) #
b = lambda x, y: x * y
print(b(4, 5)) #

  与sorted()在一起用

lst = [{'id': 1, 'name': 'jack', 'age': 18},
{'id': 2, 'name': 'tom', 'age': 55},
{'id': 3, 'name': 'jerry', 'age': 33},
{'id': 4, 'name': 'steve', 'age': 22},
{'id': 5, 'name': 'ben', 'age': 18},
]
l1 = sorted(lst, key=lambda dic:dic['age']) #根据列表里的字典的年龄大小来排序
print(l1)
# [{'id': 1, 'name': 'jack', 'age': 18}, {'id': 5, 'name': 'ben', 'age': 18},
# {'id': 4, 'name': 'steve', 'age': 22}, {'id': 3, 'name': 'jerry', 'age': 33},
# {'id': 2, 'name': 'tom', 'age': 55}]

  与filter()一起用 

lst = [{'id': 1, 'name': 'jack', 'age': 18},
{'id': 2, 'name': 'tom', 'age': 55},
{'id': 3, 'name': 'jerry', 'age': 33},
{'id': 4, 'name': 'steve', 'age': 44},
{'id': 5, 'name': 'ben', 'age': 22},
]
li = filter(lambda dic: dic['age'] > 40, lst) #过滤掉列表里年龄没有超过40的字典
print(list(li))
# [{'id': 2, 'name': 'tom', 'age': 55}, {'id': 4, 'name': 'steve', 'age': 44}]

  与map()一起用

lst1 = [1, 2, 3, 4, 5]
lst2 = [6, 7, 8, 9, 10]
print(list(map(lambda x, y: x + y, lst1, lst2))) #把两个列表索引相同的元素相加,组成一个新列表
#[7, 9, 11, 13, 15]

二. 递归函数

   在函数中调用函数本身. 就是递归.

def f():
print('hello ,world')
f() #调用自身
f() #最多调用996层,然后报错
import sys
sys.setrecursionlimit(10000) # 可以调整递归深度. 但是不一定能跑到

  递归的应用: 可以使用递归来遍历各种树形结构, 比如文件夹系统. 可以使用递归来遍历该文件夹中的所有文件.

# 遍历树形结构
import os
filePath = "d:\pycharm"
def read(filePath, n): #n的值可以用来对文件缩进
it = os.listdir(filePath) # 打开文件夹
for el in it:
# 拿到路径
fp = os.path.join(filePath, el) # 获取到绝对路径
if os.path.isdir(fp): # 判断是否是文件夹
print("\t"*n,el) #通过n的大小来对文件夹进行缩进
read(fp, n+1) # 又是文件夹. 继续读取内部的内容 递归入口
else:
print("\t"*n,el) # 递归出口 read(filePath, 0) #初始值为0,第一层文件夹不用缩进

三. 二分查找

    二分查找. 每次能够排除掉一半的数据, 查找的效率非常高, 但是局限性比较大, 必须是有序列才可以使用而分查找

  要求: 查找的序列必须是有序列.

# 判断n是否在lst中出现. 如果出现请返回n所在的位置
# 二分查找: 非递归算法
lst = [11,22,33,44,55,66,77,88,99,123,234,345,456,567,678,789,1111]
n = 567
left = 0
right = len(lst) - 1
count = 1
while left <= right: #当作表索引小于等于右边索引,可以继续比较
middle = (left + right) // 2 #中间索引
if n > lst[middle]: #若n大于中间值,则n的取值在右边部分,middle的索引需要向右移动一位
left = middle + 1
elif n < lst[middle]: #若n小于中间值,则n的取值在左边部分,middle的索引需要向左移动一位
right = middle - 1
else:
print(count) #比较的次数
print("存在")
print(middle)
break
count = count + 1
else:
print("不存在")
# 普通递归版本二分法
lst = [11,22,33,44,55,66,77,88,99,123,234,345,456,567,678,789,1111]
def binary_search(left, right, n): #左右两边索引,和判断的数字这三个参数
middle = (left + right)//2
if left > right: #比较结束后没有n的值,再进行比较时就会出现左索引大于右边索引,
return -1
if n > lst[middle]:
left = middle + 1
elif n < lst[middle]:
right = middle - 1
else:
return middle
return binary_search(left, right, n) #加return需要获得再次调用的返回值
print(binary_search(0, len(lst)-1, 65) )

lamda匿名函数(与sorted(),filter(),map() 一起用), 递归函数, 二分查找的更多相关文章

  1. 小学生都能学会的python(<lamda匿名函数,sorted(),filter(),map(),递归函数>)

    小学生都能学会的python(<<lamda匿名函数,sorted(),filter(),map(),递归函数,二分法>> 1. lambda 匿名函数 lambda 参数: ...

  2. python 内置函数,匿名函数,sorted,filter,map,递归,二分法,冒泡算法 eval

    ############################总结#################################1. lambda 匿名函数 语法——lambda 参数:返回值 __na ...

  3. 匿名函数、sorted()、filter()、map()、递归

    一.匿名函数 1.lambda 匿名函数 方法 lambda 参数:返回值 (函数名统一叫lambda) def func(n): return n**2 print(func(3)) #这是一个普通 ...

  4. 内置函数二(lambda函数,sorted(),filter(),map(),递归函数,二分法查找)

    一,匿名函数 lambda表⽰示的是匿名函数. 不需要⽤用def来声明, ⼀一句句话就可以声明出⼀一个函数 语法:    函数名 = lambda 参数: 返回值 注意: 1. 函数的参数可以有多个. ...

  5. python之内置函数(lambda,sorted,filter,map),递归,二分法

    一.lambda匿名函数 为了解决一些简单需求而设计的一句话函数,lambda表示的是匿名函数,不需要用def来声明,一句话就可以声明出一个函数. 语法: 函数名 = lambda 参数 : 返回值 ...

  6. 内置函数 lambda sorted filter map 递归

    一 lambda 匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算 n 的 n次方 def func(n): return n**n print(func(10)) f = lambda ...

  7. Python【day 14-4】sorted filter map+递归文件夹+二分法查找

    def func(x): #普通函数 return x*x ret1 = func(10) #匿名函数 f = lambda x:x*x # 匿名函数写法: 匿名函数名=lambda 参数:返回值 ' ...

  8. 内置函数之sorted,filter,map

    # 4,用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb # name=['oldboy','alex','wusir'] # print(list(map(lambda i:i ...

  9. Python【day 14-5】sorted filter map函数应用和练习

    '''''' ''' 内置函数或者和匿名函数结合输出 4,用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb name=[‘oldboy’,'alex','wusir'] 5,用m ...

随机推荐

  1. LG2634 [国家集训队]聪聪可可

    题意 题目描述 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)--遇到这种问题,一般情况下石头剪刀布就好了,可是 ...

  2. POJ2480 Longge's problem

    题意 Language:Default Longge's problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1064 ...

  3. 你不知道的JavaScript(上卷) (Kyle Simpson 著)

    第一部分 作用域和闭包 第1章 作用域是什么 (已看) 1.1 编译原理 1.2 理解作用域 1.2.1 演员表 1.2.2 对话 1.2.3 编译器有话说 1.2.4 引擎和作用域的对话 1.2.5 ...

  4. yum 安装 Mysql 5.7,忘记密码解决方案

    Linux卸载yum安装的mysql 一.系统情况 Linux:Centos7.4(64位) Mysql:5.6 二.卸载mysql 1.查看安装了哪些mysql程序 Bash rpm -qa | g ...

  5. Git SVN Clone 旧项目迁移到 Git 上

    Git SVN Clone 旧项目迁移到 Git 上 很久使用的是 SVN,但由于项目重启,想改为 Git. 之前的 SVN 仓库是本地,所以在 git svn clone 一直不成功. 正确的方式: ...

  6. openstack--7--创建一台虚拟机

    回顾下前几节用到的东西 MySQL:为各个服务提供数据存储RabbitmQ:为各个服务之间提供通信提供交通枢纽Keystone:为各个服务之间通信提供认证和服务注册Glance:为虚拟机提供镜像管理N ...

  7. 我 支持 使用 async await

    这篇文章原来的 标题 是 <我 反对 使用 async await>, 但经过后来的一些研究, 发现 async await 是 良性 的, 所以 我把 标题 改成了 <我 支持 使 ...

  8. css中权重与继承

    出处:http://blog.csdn.net/xf616510229/article/details/53613212

  9. PyCharm 链接MySQL 数据库

    1.View -> Tool Windows-Database; 2.添加数据源: 3.配置数据库的驱动信息: 4.设置驱动文件,勾选“Use Provided driver MySQL Con ...

  10. Docker 制作自己的镜像

    1. 下载tomcat镜像 docker pull hub.c.163.com/library/tomcat:latest 2. 创建Dockfile vi Dockerfile from hub.c ...