一:匿名函数。

  匿名函数语法:

     函数名= 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,匿名函数,排序,筛选,映射,递归,二分法相关推荐

  1. C#匿名函数排序交错数组

    C#匿名函数排序交错数组 前言 建立测试数据 排序代码 原理 前言 对于一个交错数组,不能直接调用Array.Sort();方法对数组内的另一个数组排序.因此若遇到只根据内部数组一个元素来对整个交错数 ...

  2. 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, ...

  3. 在NewLisp中实现匿名函数的递归

    2019独角兽企业重金招聘Python工程师标准>>> 匿名函数在很多语言中的表现形式大概如下: (lambda (n)(* (+ n 1) (- n 1))) 只有参数列表和函数体 ...

  4. python day-15 匿名函数 sorted ()函数 filter()函数 map()函数 递归 二分法...

    一.匿名函数 匿名函数的结构:变量   =  lamda  参数: 返回值 a  =  lamda  x : x*x       # x为参数,   : 后边的为函数体 print(a(x)) def ...

  5. 函数递归/二分法/列表,字典生成式/三元表达式/匿名函数/内置函数

    一.递归函数 递归函数:就是在函数调用阶段直接或者间接的调用自己 递归函数的两个阶段: 1.回溯:不停的重复的一个过程,在这个过程中将问题不断的简单化,直到最终打到要求(条件) 2.递归:一次次的往回 ...

  6. 2019-07-12 函数递归、二分法、匿名函数、三元表达式、内置函数

    一.递归函数 我理解为递归函数也是函数嵌套的一种,函数在调用时,直接或间接的调用了自身. 简单的直接调用本身(这种调用会一直循环下去,会很占内存空间,所以python解释器为了防止无限占用内存,对这种 ...

  7. 七 递归与二分法、匿名函数、内置函数

    一 递归与二分法 一.递归调用的定义 二.递归分为两个阶段:递推,回溯 三.python中的递归效率低且没有尾递归优化 四.可以修改递归最大深度 五. 二分法 二 匿名函数 一. 什么是匿名函数? 二 ...

  8. 匿名函数、冒泡排序,二分法, 递归

    匿名函数 lambda 匿名函数 格式 lambda 参数:返回值 函数名统一叫lambda,最多只能写一行普通的正常的函数 def func(n):return n * n lambda匿名函数写法 ...

  9. python入门day16——函数的递归调用、二分法、三元表达式、匿名函数

    文章目录 函数的递归调用 递归调用应该分为两个阶段 二分法 三元表达式 匿名函数 函数的递归调用 函数的递归调用:就是在调用一个函数的过程中又直接或间接地调用自己 示例1:直接调用自己 def foo ...

最新文章

  1. 基于OpenCV实现口罩识别
  2. 简单的java rpc_Java 简单的rpc 一
  3. 传感器应用的demo自动录音器
  4. cache:缓存在asp.net中如何管理?服务器端缓存?Session, Application, Cache objectscache ,客户端缓存?Cookies,ViewState...
  5. 使用JMSTester对JMS层进行基准测试
  6. C++设计模式-单例模式(双重锁定)
  7. 5月8号--华为正式推出新企业标识
  8. Turbo C 2.0安装及其使用
  9. 微信小程序如何被微信搜索收录?开启页面收录功能,被评定为达标
  10. casue usb kb 找不到驱动程序_手把手教你安装喷墨打印机驱动程序
  11. 【HAVENT原创】让 axios 支持 jsonp
  12. 卡内基梅隆大学计算机科学博士,卡内基梅隆大学有哪些专业处于世界顶尖水平?...
  13. opencv23:Histogram直方图反向投影
  14. 调试经验——使用VBA在Excel中打开Word文档(Open Word file in Excel with VBA)
  15. linux关闭硬盘检测,关闭Linux开机强制检测硬盘
  16. 安卓玩机搞机技巧综合资源-----查看手机硬件全部参数 隐藏参数 多个软件【十七】
  17. 涂鸦Zigbee SDK开发系列教程——1.创建产品
  18. 佛说爱情三:一切皆流,无物永驻
  19. 编写一程序,输入月份号,输出该月的英文月名。例如,输入3,则输出“March“,要求用指针数值处理。
  20. Jira Bug severity(缺陷严重程度)说明

热门文章

  1. Python基础知识之2——字典
  2. 植物大战僵尸:分析植物的攻击速度
  3. android pda 扫码demo,android 关于PDA条形码的开发demo
  4. 机器视觉运动控制一体机应用例程|端子裁切检测
  5. 记录一下Jetson突然无法识别csi219相机笔记
  6. android 购物车布局,Android 加入购物车动画
  7. 计算机二级自学免费教程,计算机二级自学网站
  8. 【烙铁使用规范】—— 烙铁头使用及保养
  9. access数据库拆分的用途_ACCESS数据库的用途和优缺点
  10. 3个超实用的资源搜索网站,有了它们,再也没有你找不到的资源!