day14,匿名函数,排序,筛选,映射,递归,二分法
一:匿名函数。
匿名函数语法:
函数名= lambda 形参:返回值
(1)例 :
a=lambda n:n**nr=a(3)print(r) 结果为:27
(2)例:写一个lambda 给函数传递两个参数, a, b 计算a+b的结果。
a=lamabda m,n:m+n
(3)例:写一个lambda 计算字符串长度并返回 # len()
a=lambda s:len(s)
匿名函数有名字,统一叫“lambda”
注意!:匿名函数一般不会用来做复杂的操作。
二:sorted(排序函数)
排序函数语法:
sorted(iterable,key=none,reverse=false)
lterable(可迭代对象) key(排序规则) reverse(是否是倒叙,true:倒叙,false:正序)
(1)例:
lst=[1,5,3,4,6] lst2=sorted(lst) print(lst)#原列表不会改变 print(lst2)#返回的新列表是经过排序的 dic={1:‘a’,3:‘c’,2:‘b’} print(sorted(dic)) #如果是字典。则返回排序过后的key
(2)例:函数和 lambda 组合使用
lst=[”饭岛振宇“,”火星情报局“,”神盾局特工3“,"樱井"] #计算字符串长度 def func(s)return len(s) print(sorted(lst,key=lambda s:len(s)))
(3)l例:函数和 lambda 组合使用
lst = [{"id":1, "name":'alex', "age":18}, {"id":2, "name":'wusir', "age":16}, {"id":3, "name":'taibai', "age":17}] #按照年龄对学生信息进行排序 print(sorted(lst,key=lambda e:e['age']))
三:filter()筛选函数:
筛选函数语法:
filter(function.lterable)
function:用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function
返回 的true或者 false来判断是否保留此项数据
lterable:可迭代对象
(1)例:
lst = [1,2,3,4,5,6,7] le = filter(lambda x: %2==0,lst) #筛选所有的偶数 print(le) print(list(le))
(2)例:
lst = [{"id":1, "name":'alex', "age":18}, {"id":2, "name":'wusir', "age":16}, {"id":3, "name":'taibai', "age":17}] fl=filter(lambda e: e['age'] > 16,lst) #筛选年龄大于16的数据 print(list(fl))
四:map() 映射函数
映射函数的语法:
map(function,iterate)可以对可迭代对象中的每一个元素进行映射,分别取执行function
(1)例:
#计算列表中的每个元素的平方,但会新的列表 def func(s)return s*smp = map(func,[1,2,3,4,5,6,]) print(mp) print(list(mp)) #改写成lambda print(list(map(lamabda s:s*s,[1,2,3,4,5,6])))
(2)例:
#计算两个列表中相同的数据的和 lst1 = [1, 2, 3, 4, 5] lst2 = [2, 4, 6, 8, 10] print(list(map(lambda x,y:x+y,lst1,lst2)))
五:递归
在函数中调用函数本身,就是递归。
def func():print(”我是谁“)func() func()#在python中递归的深度最大可以到1000,但结果都不回达到1000. def foo(n):print(n)n+=1foo(n) foo(1)
递归的应用:
我们可以使用递归来遍历各种树形结构,比如我们的文件夹系统,可以使用递归来遍历该文件夹中的
所有文件。
import osdef func(path,ceng):lst = os.listdir(path) #获取到当前文件夹中的所有文件for el in lst: #遍历文件夹中的文件,这里获取的只是本层文件名rp = os.p ath.join(path,el) #加入文件夹 获取到文件夹+文件 if os.path.lisdic(rp): #如果该路径下的文件是文件夹print("\t"*ceng,el,sep="")func(rp,ceng+1) #继续进行相同的操作else:print("\t"*ceng,el,sep=") #递归出口,最终在这里隐含着return func(”e:\哈哈“,0)
六:二分查找
二分查找,每次能够排除掉一半的数据,查找的效率非常高,但局限性比较大,必须是有序序列才可以
使用二分查找。
要求:查找的序列必须是有序序列 。总结:掐头去尾找中间
例:
# 判断n是否在lst中出现. 如果出现请返回n所在的位置
# ⼆二分查找---⾮非递归算法
lst = [22, 33, 44, 55, 66, 77, 88, 99, 101, 238, 345, 456, 567, 678, 789] n = int(input("请输入一个数字")) laft = 0 #左边界 right = len(lst) - 1 # 末尾的索引,右边界 while lsft <= right: # 当左边界大于右边界结束循环 mid = (laft+right)// 2 #地板除以2 ,求中间的索引坐标if n < lst[mid]: #判断你的数字和中间数大小的比较right = mid - 1 #右边界就往左边界移动elif n > lst[mid]:laft = mid + 1 #左边界往右边界移动+1else:print("找到了") #否则 就是找到目标 退出break else: #当左边比右边大,循环结束,没有找到目标数print(”没找到“)
# 递归函数写 lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963] def binary_search(lst,n,left,right):if left > right:ruturn Flasemid = (left+right) // 2if n > lst[mid]:left = mid + 1 #当递归有返回值的时候,需要写ruturn,否则有可能接收不到返回值return binary_search(lst,n,lsft,right)elif n < lst[mid]:right = mid - 1return binary_search(lst,n,left,right)else:print("找到了")return n = int(input("请输入一个数字")) ret = binary_search(lst,n,0, len(lst)- 1) print(ret)
转载于:https://www.cnblogs.com/wm828/p/9911366.html
day14,匿名函数,排序,筛选,映射,递归,二分法相关推荐
- C#匿名函数排序交错数组
C#匿名函数排序交错数组 前言 建立测试数据 排序代码 原理 前言 对于一个交错数组,不能直接调用Array.Sort();方法对数组内的另一个数组排序.因此若遇到只根据内部数组一个元素来对整个交错数 ...
- Python匿名函数---排序
一.列表的排序 nums = [1,2,3,5,4,7,87,4,9,56,44,7,5] nums.sort()#默认从小到大排序 nums#结果为:[1, 2, 3, 4, 4, 5, 5, 7, ...
- 在NewLisp中实现匿名函数的递归
2019独角兽企业重金招聘Python工程师标准>>> 匿名函数在很多语言中的表现形式大概如下: (lambda (n)(* (+ n 1) (- n 1))) 只有参数列表和函数体 ...
- python day-15 匿名函数 sorted ()函数 filter()函数 map()函数 递归 二分法...
一.匿名函数 匿名函数的结构:变量 = lamda 参数: 返回值 a = lamda x : x*x # x为参数, : 后边的为函数体 print(a(x)) def ...
- 函数递归/二分法/列表,字典生成式/三元表达式/匿名函数/内置函数
一.递归函数 递归函数:就是在函数调用阶段直接或者间接的调用自己 递归函数的两个阶段: 1.回溯:不停的重复的一个过程,在这个过程中将问题不断的简单化,直到最终打到要求(条件) 2.递归:一次次的往回 ...
- 2019-07-12 函数递归、二分法、匿名函数、三元表达式、内置函数
一.递归函数 我理解为递归函数也是函数嵌套的一种,函数在调用时,直接或间接的调用了自身. 简单的直接调用本身(这种调用会一直循环下去,会很占内存空间,所以python解释器为了防止无限占用内存,对这种 ...
- 七 递归与二分法、匿名函数、内置函数
一 递归与二分法 一.递归调用的定义 二.递归分为两个阶段:递推,回溯 三.python中的递归效率低且没有尾递归优化 四.可以修改递归最大深度 五. 二分法 二 匿名函数 一. 什么是匿名函数? 二 ...
- 匿名函数、冒泡排序,二分法, 递归
匿名函数 lambda 匿名函数 格式 lambda 参数:返回值 函数名统一叫lambda,最多只能写一行普通的正常的函数 def func(n):return n * n lambda匿名函数写法 ...
- python入门day16——函数的递归调用、二分法、三元表达式、匿名函数
文章目录 函数的递归调用 递归调用应该分为两个阶段 二分法 三元表达式 匿名函数 函数的递归调用 函数的递归调用:就是在调用一个函数的过程中又直接或间接地调用自己 示例1:直接调用自己 def foo ...
最新文章
- 基于OpenCV实现口罩识别
- 简单的java rpc_Java 简单的rpc 一
- 传感器应用的demo自动录音器
- cache:缓存在asp.net中如何管理?服务器端缓存?Session, Application, Cache objectscache ,客户端缓存?Cookies,ViewState...
- 使用JMSTester对JMS层进行基准测试
- C++设计模式-单例模式(双重锁定)
- 5月8号--华为正式推出新企业标识
- Turbo C 2.0安装及其使用
- 微信小程序如何被微信搜索收录?开启页面收录功能,被评定为达标
- casue usb kb 找不到驱动程序_手把手教你安装喷墨打印机驱动程序
- 【HAVENT原创】让 axios 支持 jsonp
- 卡内基梅隆大学计算机科学博士,卡内基梅隆大学有哪些专业处于世界顶尖水平?...
- opencv23:Histogram直方图反向投影
- 调试经验——使用VBA在Excel中打开Word文档(Open Word file in Excel with VBA)
- linux关闭硬盘检测,关闭Linux开机强制检测硬盘
- 安卓玩机搞机技巧综合资源-----查看手机硬件全部参数 隐藏参数 多个软件【十七】
- 涂鸦Zigbee SDK开发系列教程——1.创建产品
- 佛说爱情三:一切皆流,无物永驻
- 编写一程序,输入月份号,输出该月的英文月名。例如,输入3,则输出“March“,要求用指针数值处理。
- Jira Bug severity(缺陷严重程度)说明