.匿名函数(名字统一叫lambda)
.语法 lambda 参数:返回值
.参数可以有多个,用逗号隔开
.只能写一行,执行结束后直接返回值
4返回值和正常函数一样,可以是任意值
.列:
f=lambda n:n**n #传入一个数n,返回她的n次方
print(f())
.sorted 排序函数
.语法:
sorted(iteble,key=NONE,reverse=FALSE)
.iteble 可迭代对象
.key 排序函数 sorted内部把可迭代对象的每一个元素传给函数,
根据函数的运算规则(返回值)进行排序
.是否倒叙 TRUE:倒叙 FALSE :正序
4.排序后是一个列表
.列:
.对字典进行排序,返回的是key
dic = {:'A', :'C', :'B'}
print(sorted(dic))
[, , ]
     .列表
lst = [,,,,]
lst2 = sorted(lst)
print(lst) 原列表不会改变
print(lst2) 新列表是经过排序的
.和函数联用
lst = ["麻花藤", "冈本次郎", "中央情报局", "狐仙"]
print(sorted(lst,lambda s:len(s)) 根据字符串长度进行排序
.
lst = [{"id":, "name":'alex', "age":},
{"id":, "name":'wusir', "age":},
{"id":, "name":'taibai', "age":}]
print(sorted(lst,lambda s:s["age"]) 根据年龄排序字典
.filter 筛选函数
.语法
filter(function,iterble)
用来筛选的函数,filter会自动把可迭代对象的元素传给
function,然后根据function返回的TRUE 或者FALSE来
判断是否保留此项数据
.列
lst = [,,,,,,]
ll=print(lambda i:i%==,lst)#筛选出所有偶数
print(ll) #迭代器
print(list(ll)) #取值[, , ]
.
lst = [{"id":, "name":'alex', "age":},
{"id":, "name":'wusir', "age":},
{"id":, "name":'taibai', "age":}]
fl = filter(lambda e: e['age'] > , lst) # 筛选年龄⼤于16的数据
print(list(fl))
.map 映射函数
.语法
map(function,iteable)
.求平方
print(list(map(lambda x:x*x*x,[,,,,])))
.映射
lis1=[,,,,]
lis2=[,,,,]
map(lambda x,y:x+y,lis1,lis2)
注: . 如果lis不等长,就是按短的截取
.如果函数不存在,就一一对应打包成元组
 注:map和filter返回的都是迭代器,所以要看里面的内容需要用for循环查询出来,或者将返回值直接转换成列表
.递归
.定义:在函数中调用函数本身就是递归
.语法
def func()
print("递归")
func()
func()
.应用 遍历文件夹的所有文件
import os
def read(filepath,n)
list=os.listdir(filepath) #打开一个文件,获取里面所有的内容,返回列表
for fi in list: #遍历获得的名字(包含文件名和文件夹名)
file_real_path=os.path.join(path,fi) #获得的名字加上路径等于绝对路径
if os.path.isdir(file_real_path) #判断在绝对路径下是否文件夹
#递归的入口
print("\t"*n,fi) #打印
read(file_real_path,n+1) #是文件夹继续调用函数
else:
print("\t"*n,fi) #不是文件夹就直接输出
read("../py",)
.二分法
.优点:查找快,效率高
.缺点:局限性大,必须是有序序列
.列
lst = [, , , , , , , , , , , , , , ]
num=int(input("请输入要查找的数字"))
left= #确定左边界,其实是索引的起始
right=len(lst)- #确定右边界,其实是索引的结束
count=1 #用来确定共查找了几次
while left<=right:
mid=(left+right)//2 #整除2 ,取整
if num>lst[mid]:
left=mid+
elif num<lst[mid]:
right=mid-
else:
print("找到了")
break
count+=1
else:
print("没找到")
7.普通版的二分法(函数的方法)
lst=[...........]
def binary_search(n,left,right) #查找的数以及左右边界()
if left<right:
mid=(left+right)//2 #对2整除,取整
if n<lst[mid]:
right=mid-1
elif n>lst[mid]:
left=mid+1
else:
return mid
return binary_search(n,left,right) #这个return一定要加,要不然返回的一定是NONE
else:
return -1
print(binary_search(567, 0, len(lst)-1))
8.另类二分法,比较难计算位置
lst=[.......]
def binary_search(ls,target):
left=0
right=len(lst)-1
if left>right:
print("不存在")
mid=(left+right)//2
if target<lst[mid]
return binary_search(lst[:mid],target)
elif target>lst[mid]
return binary_search(lst[mid+1:],target)
else:
print("在这里")
binary_search(lst.,567)

day13 内置函数二 递归,匿名函数,二分法的更多相关文章

  1. Python内置函数二 (递归函数,匿名函数,二分法)

    匿名函数 lambda() 语法: lambad  参数 : 返回值 def func(a,b): return a * b print(func(2,5)) a = lambda a ,b : a* ...

  2. python之内置函数(二)与匿名函数、递归函数初识

    一.内置函数(二)1.和数据结构相关(24)列表和元祖(2)list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素).tuple:将一个可迭代对象转化成元组(如果是字典,默认将k ...

  3. python函数知识六 内置函数二、匿名函数与内置函数三(重要)

    19.内置函数二 abs():绝对值 lst = [1,2,-3,1,2,-5] print([abs(i) for i in lst]) enumerate("可迭代对象",&q ...

  4. Python之旅Day3 文件操作 函数(递归|匿名|嵌套|高阶)函数式编程 内置方法

    知识回顾 常见五大数据类型分类小结:数字.字符串.列表.元组.字典 按存值个数区分:容器类型(列表.字典.元组) 标量原子(数字.字符串) 按是否可变区分:可变(列表.字典) 不可变(数字.字符串.元 ...

  5. 《Python》 内置函数补充、匿名函数、递归初识

    一.内置函数补充: 1.数据结构相关(24): 列表和元祖(2):list.tuple list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素). tuple:将一个可迭代对象转 ...

  6. python学习-day16:函数作用域、匿名函数、函数式编程、map、filter、reduce函数、内置函数r

    一.作用域 作用域在定义函数时就已经固定住了,不会随着调用位置的改变而改变 二.匿名函数 lambda:正常和其他函数进行配合使用.正常无需把匿名函数赋值给一个变量. f=lambda x:x*x p ...

  7. 内置函数filter()和匿名函数lambda解析

    一.内置函数filter filter()函数是 Python 内置的一个高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回由符合条件迭代器 ...

  8. day16_函数作用域_匿名函数_函数式编程_map_reduce_filter_(部分)内置函数

    20180729    补充部分代码 20180727    上传代码 #!/usr/bin/env python # -*- coding:utf-8 -*- # ***************** ...

  9. JavaScript 闭包系列二(匿名函数及函数的闭包)

    一. 匿名函数 1. 函数的定义,可分为三种 1) 函数声明方式 function double(x) {     return 2*x; } 2)Function构造函数,把参数列表和函数体都作为字 ...

随机推荐

  1. Struts2 结合 Freemarker 实例

     Freemarker 是一个不依赖 web 容器的模板引擎,一个基于模板生成文本输出的工具.其工作的原理如下图: freemarker 不是一个 web 应用的框架,而适合作为 web 应用的一个组 ...

  2. Apache的DBUtils框架学习(转)

    原文地址:http://www.cnblogs.com/xdp-gacl/p/4007225.html 一.commons-dbutils简介 commons-dbutils 是 Apache 组织提 ...

  3. MSScriptControl详解(可实现在C#等语言中调用JAVASCRIPT代码)

    ScriptControl接口 属性名称 类型 备注 AllowUI BOOL 检测是否允许运行用户的接口元素.如果为False,则诸如消息框之类的界面元素不可见. CodeObject Object ...

  4. String/StringBuilder 类 用对象数组实现登录注册功能

    一.需求说明:实现用户注册.登陆功能: 程序中使用一个长度为3的对象数组,存储用户的登录名和密码: 例如如下格式: 登录名    密码      生日           爱好 zhangsan 11 ...

  5. Linux 大页面使用与实现简介(转)

    引言 随着计算需求规模的不断增大,应用程序对内存的需求也越来越大.为了实现虚拟内存管理机制,操作系统对内存实行分页管理.自内存“分页机制”提出之始,内存页面的默认大小便被设置为 4096 字节(4KB ...

  6. Zbar和Z*算法对比

    博客转载自:https://blog.csdn.net/qishandaxue/article/details/45481387 移植zbar和zxing源码到linux平台,zbar移植的是C源码, ...

  7. scala中lazy

    Scala中通过lazy关键字来定义惰性变量,惰性变量只能是不可变变量.只有在调用惰性变量的时候,才会去实例化这个变量

  8. JavaScript中的Array.prototype.slice.call()方法学习

    JavaScript中的Array.prototype.slice.call(arguments)能将有length属性的对象转换为数组(特别注意: 这个对象一定要有length属性). 但有一个例外 ...

  9. C++面试笔记--宏定义

    宏定义是一个比较常考的考点,所以我归纳总结了一下近年的宏定义的题目 //宏定义面试题1.cpp//What is the output of the following code?[中国台湾某著名杀毒 ...

  10. 2015年第六届蓝桥杯省赛试题(JavaA组)

    1.结果填空 (满分3分)2.结果填空 (满分5分)3.结果填空 (满分9分)4.代码填空 (满分11分)5.代码填空 (满分13分)6.结果填空 (满分17分)7.结果填空 (满分21分)8.程序设 ...