lambda函数:表示匿名函数,不需要def来声明,一句话就能搞定。

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

求10的10次方
f=lambda n:n**n
print(f(10))

注意:

函数名可以是多个,用逗号隔开

匿名函数只能写一行,当逻辑结束之后就直接返回数据。

返回值和正常函数一样,可以是任意数据

返回较大的那个数
user=lambda x,y:max(x,y)
print(user(2,1)) 多个数字,返回最大值
user = lambda *args:max(args)

sorted()函数:排序函数

语法:sorte(lterable,key =none ,reverse=False)

lterable:可迭代对象

key:sorted函数内部会把可迭代对象中的每一个元素拿出来交给后面的key
 后面的key计算出一个数字. 作为当前这个元素的权重, 整个函数根据权重进行排序

reverse:是否倒序,True,倒序,False正序

lst = [
{'name':"汪峰","age":48},
{"name":"章子怡",'age':38},
{"name":"alex","age":39},
{"name":"wusir","age":32},
{"name":"赵一宁","age":28}
]
li=sorted(lst,key=lambda el :len(el["name "]),reverse=True)
print(li)

filter()筛选函数

语法:filter(function,lterable)

function:用来筛选函数,在filter中,把iterable中的元素传递给function,然后根据function返回的  True或者False来判断是否保留此项数据

iterable:可迭代对对象


lst = ["张无忌", "张铁林", "赵一宁", "石可心","马大帅"]
f = filter(lambda el:el[0]!="张",lst)
print('_iter_'in dir(f))
for el in f :
print(el)
筛选掉姓张的人
lst = [
{"name":"汪峰", "score":48},
{"name":"章子怡", "score":39},
{"name":"赵一宁","score":97},
{"name":"石可心","score":90}
]
f = filter(lambda el:el["score"] <60,lst)
print(list(f ) ) 筛选掉60分以下的人

map()

映射函数

语法:map(function,iterable)对可迭代对象的每一个元素进行映射,分别取执行function

print(list(map(lambda x:x*x,[1,2,3,4])))
利用映射函数来求x的x 次幂
算两个相同位置的列表的和
lst=[1,2,3,4,5]
lst1=[2,4,6,8,10]
print(list(map(lambda x, y: x+y,lst,lst1)))

递归

在函数中调用函数本身,就是递归,相当于贪吃蛇

在python中,递归最深是1000

我们可以利用递归来遍历各种树形结构


遍历一个文件夹
import os#引入模块
def func(wjm):
wj=os.listdir(wjm)#打开要打开的文件夹
for el in wj :#拿到这个文件夹的每一个文件
n_f=os.path.join(wjm,el )#获取到路径
if os.path .isdir(n_f):#判断是否是文件夹
print(el)#是文件夹打印问价名
func(n_f)
else:
print(el )#不是文件,普通文件
func("f:/上课作业视频")

二分法查找

核心:去头去尾取中间

条件:必须是有序的

lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 , 238 , 345 , 456 , 567 , 678 , 789]

n=888
zb=0
yb=len(lst)-1
while zb<=yb:
zj=(zb+yb)//2
if lst[zj]>n:
yb=zj-1
if lst[zj]<n:
zb=zj +1
if lst[zj]==n:
print("找到了")
break
else:
print("没找到")
用递归来完成二分法
def func(n,zb,yb):
if zb<=yb:
zj=(zb+yb)//2
if lst[zj]>n:
yb=n-1
return (n,zb,yb)
if lst[zj]<n:
zb=zb+1
return (n,zb,yb)
elif n==lst[zj]:
print("找到了")
return zj
else:
print("没有这个数")
ret=func(99,0,len(lst)-1)
print(ret)

lambda匿名函数sorted排序函数filter过滤函数map映射函数的更多相关文章

  1. python高阶函数——sorted排序算法

    python 内置的sorted()函数可以对一个list进行排序: >>> sorted([8,3,8,11,-2]) [-2, 3, 8, 8, 11] 既然说是高阶函数,那么它 ...

  2. lambda匿名函数,sorted排序,filter()筛选,map()映射

    一丶匿名函数 语法: 函数名 = lambda参数:返回值 # 普通的正常的函数 def func(n): return n * n ret = func(9) print(ret) # 匿名函数 a ...

  3. python学习笔记1 -- 函数式编程之高阶函数 sorted排序

    python提供了很强大的内置排序函数,妈妈再也不担心我不会写冒泡排序了呀,sorted函数就是这个排序函数,该函数参数准确的说有四个,sorted(参数1,参数2,参数3,参数4). 参数1 是需要 ...

  4. php自带的filter过滤函数

    PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤. filter_has_var()检查是否存在指定输入类型的变量. filter_id()返回指定过滤器的 ID 号. filt ...

  5. Python_Mix*匿名函数,sorted,filter,map,递归函数,二分法查找

    lambda匿名函数(函数名统一都叫lambda) 为了解决简单的需求而设计的一句话函数 语法: lambda 参数 返回值 n = lambda a,b: max(a,b) ret = n(9,4) ...

  6. 019.Python函数sorted,filter和推导式

    一 sorted函数 sorted(iterable,reverse=False,key=函数) 功能:排序 参数: iterable:可迭代性数据(常用:容器类型数据,range对象,迭代器) re ...

  7. python高阶函数sorted

    原文 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因 ...

  8. lambda匿名函数,sorted(),filter(),map(),递归函数

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

  9. 匿名函数lambda,过滤函数filter,映射类型map

    匿名函数lambda, 作用是不用定义函数,用完之后会自动被删掉,在使用执行脚本的时候,使用lambda就可以省下定义函数的过程,简化代码的可读性. 格式是 例子g=lambda x,y:x+y g( ...

随机推荐

  1. rocketMQ 通信协议格式

    rocketMQ 使用 netty 通信,端对端的通信,为了避免粘包.分包,需要指定发送数据的边界. 使用的解码器是 LengthFieldBasedFrameDecoder // org.apach ...

  2. 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_8 properties标签的使用及细节

    properties 可以把数据库链接的配置放在上面的properties里面 #{占位符}的形式去引用上面的.下面的内容就是引用上面的内容的定义. 运行查询的方法测试一下 这样改造可以成功的运行程序 ...

  3. 什么是SLF,PSL,MLF,SLO?

    受国际经济金融形势不确定性增强以及各种影响流动性的因素波动较大影响,近年来我国银行体系短期流动性供求的波动性有所加大,尤其是当多个因素相互叠加或市场预期发生变化时,有可能出现市场短期资金供求缺口难以通 ...

  4. 前端使用Git 切换分支 查看线上远程,本地切换

    想要使用Git切换线上分支时先 得先查看线上分支 git branch -a //查看线上分支 git branch //查看本地分支 这是线上的分支图(当前是master) 知道有那些分支就可以进行 ...

  5. Java中个容器的对比

    List: 有序,列表存储,元素可重复 Set: 无序,元素不可重复 Map:无序,元素可重复,key不能重复 LinkedList :链表,删除和添加效率很高,随机访问效率较ArrayList类低, ...

  6. 03Java面试题-------------中科软

    1.String是最基本的数据类型吗?String和StringBuffer的区别? 不是.Java中的基本数据类型只有8个:byte,short,int,long,float,double,char ...

  7. 修改了Ubuntu下的/usr目录权限,导致不能使用sudo命令的修复-----转载

    刚开始运行sudo时,报了下面这个错误 sudo: must be setuid root,于是上网找解决方法,搜索出来的都是这样解决的 ls -l  /usr/bin/sudochown root: ...

  8. idea中创建maven格式的文件方法

    其中新建的maven工程有时候不全或者出一些小问题导致新建类,或者其他文件时候找不到新建的快捷方式,下面就说一种快速设置

  9. Jmeter 03 Jmeter断言之Json断言

    json断言可以让我们很快的定位到响应数据中的某一字段,当然前提是响应数据是json格式的,所以如果响应数据为json格式的话,使用json断言还是相当方便的. 还是以之前的接口举例 Url: htt ...

  10. HTTPS测试

    1.首先理解HTTPS的含义,清楚http与HTTPS的区别 2.相对于http而言,https更加安全,因 3.使用数字证书使传输更安全,数字证书使用keytool工具生成 测试准备: 创建公钥和秘 ...