生成器send方法、递归、匿名函数、内置函数
今日内容
1.生成器的send方法。
2.递归:函数自己调用自己
3.匿名函数
4.内置函数
生成器send方法
send的工作原理
1.send发生信息给当前停止的yield
2.再去调用__next__()方法,然后生成器继续往下走,返回下一个yield值并停止
案例:
persons = ['张三', '李四', '王五', '赵六', '钱七'] def order(persons):
for i in range(len(persons)):
if i == 0:
print('%s在面试' % persons[0])
else:
print('%s叫%s去面试' % (name, persons[i]))
print('%s面试结束' % persons[i])
name = yield persons[i] obj = order(persons)
for i in range(len(persons)):
if i == 0:
p = obj.__next__()
else:
p = obj.send(p)
print('---------------')
递归:
函数直接或间接调用本身,都称之为递归
回溯:找寻答案的过程
递推:推出结果的过程
前提条件:
1.递归必须有出口
2.递归回溯递推的条件一定有规律
案例:
# 比如总共有5个人,询问第一个人的年纪,他说我比第二个人大两岁,问第二个人他说
# 我比第三个人大两岁,依次类推。直到第五个人他说他40岁,求第一个人的年纪
def get_age(count): # 获取人的数量,count是外界传入的信息,告诉它是几个人
if count == 1: # 这里是出口,给出最后一个人的年纪
return 40 # 最后一个人的年纪,来通过减法来反推
age = get_age(count - 1)-2 # 每次进来都回把人数减1,并且岁数减2.直到count = 1 .得到最后一个人的年纪
return age # 然后返回 计算出的第一个人的年纪
age = get_age(10)
print(age) # 结果为22岁 # 求 n 的阶乘, 比如5的阶乘= 5!* 4!* 3!* 2!* 1! = 120
# 5! = 5 * 4
# 4! = 4 * 3
# 3! = 3 * 2
# 2! = 2 * 1
# 1! = 1 # 数学界规定,1的阶乘等于1
def jiecheng(n):
if n ==1 or n ==0:
return 1
ji = n * jiecheng(n-1)
return ji
res = jiecheng(5)
print(res) # 结果为120
匿名函数
1.函数没有函数体,
2.匿名函数的关键字采用 lambda
3.关键字 lambda 与 标识函数功能体: 之间一定是参数,所以省略()
4.匿名还是没有函数体,只有返回值,所以函数体和返回值的return关键字都省略了
格式: lambda *args,**kwargs:'返回值'
注意:
1.参数的使用和有名函数一样,六种形参都支持
2.返回值必须明确成一个值,可以为单个值对象,也可以为一个容器对象
max结合匿名工作原理
1.max内部会遍历iter, 将遍历结果逐一传给lambda的参数x
2.依据lambda的返回值作为比较条件,得到最大条件下的哪个遍历值
3.对外返回最大的遍历值
常用的内置函数
map()函数
# res = map(lambda x:x * 2,[3,1,2]) # 将遍历结果映射为任意类型值,
# print(list(res)) # 此处使用list接收
# print(tuple(res)) # 也可以使用元祖接收
# reduce() 函数会对参数序列中元素进行累积。
# from functools import reduce
# res = reduce(lambda x, y: x * y, [3, 1, 2]) # 使用匿名函数,来计算列表中所有数字相乘的结果
# print(res) # 结果为6
生成器send方法、递归、匿名函数、内置函数的更多相关文章
- Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数 目录 Pycharm使用技巧(转载) Python第一天 ...
- python 匿名函数&内置函数
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数怎么定义匿名函数: cal = lambda x : x*x # cal是函数名,lambda是定义匿名函数的关键字 冒号前面的额x是参数即函数 ...
- python学习day11 函数Ⅲ (内置函数与lambda表达式)
函数Ⅲ(内置函数&lambda表达式) 1.函数小高级 函数可以当做变量来使用: def func(): print(123) func_list = [func, func, func] # ...
- python 函数--内置函数
一.内置函数 内置函数是python自带的一系列常用函数. 二.python3中内置函数 内置功能 abs() delattr() hash() memoryview() set() ...
- Python学习笔记014——迭代工具函数 内置函数enumerate()
1 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. 2 语法 enumerate(sequ ...
- Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数
本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...
- python基础之递归,匿名,内置函数
递归函数: 什么是递归函数? 函数递归调用:在调用一个函数的过程中,又直接或间接地调用了该函数本身. 递归必须要有两个明确的阶段: ①递推:一层一层递归调用下去,强调:每进入下一层问题规模减少 ②回溯 ...
- Python 函数递归-三元表达式-列表生成式-字典生成式-匿名函数-内置函数
上节课复习: 1. 无参装饰器 def 装饰器名字(func): def wrapper(*args,**kwargs): res = func(*args,**kwargs) return res ...
- Python——day14 三目运算、推导式、递归、匿名、内置函数
一.三目(元)运算符 定义:就是 if...else...语法糖前提:简化if...else...结构,且两个分支有且只有一条语句注:三元运算符的结果不一定要与条件直接性关系 cmd = input ...
- day5--装饰器函数的信息打印,迭代器,生成器,列表推导式,内置函数
本文档主要内容: 一 装饰器函数的信息打印 二 迭代器 三 生成器 四 生成器表达式和列表推导式 五 内置函数 一 装饰器函数的信息打印 一个函数一旦被装饰器给装饰后,这个函数的信息使用原来的命令打印 ...
随机推荐
- 【转】用win7(64位)远程桌面连接linux(Ubuntu14.04)详细教程
转自:http://blog.csdn.net/qq754438390/article/details/50042511 亲测,确实是可以.非常感谢原博. 用win7(64位)远程桌面连接linux( ...
- hadoop中的JournalNode
1.在HADOOP扮演的角色 JournalNode是在MR2也就是Yarn中新加的,journalNode的作用是存放EditLog的, 在MR1中editlog是和fsimage存放在一起的然后S ...
- BZOJ 2946 [Poi2000]公共串 (二分+Hash/二分+后缀数组/后缀自动机)
求多串的最长公共字串. 法1: 二分长度+hash 传送门 法2: 二分+后缀数组 传送门 法3: 后缀自动机 拿第一个串建自动机,然后用其他串在上面匹配.每次求出SAM上每个节点的最长匹配长度后,再 ...
- Codeforces Round #446 Div1 E
题目大意 有n个数,进行k轮操作:随机一个i,让\(a_i\)减1,然后ans加上\(\Pi_{j\neq i}a_i\). 求ans的期望. 分析 发现,造成的伤害就是原来的ai的积减去k轮操作后的 ...
- 【agc002d】Stamp Rally
题目大意 无向图中,每次询问从x和y分别出发,一共经过z个点,使需要走过编号最大的边最小. 解题思路 对于暴力,我们对于每个询问二分答案ans,将1~ans的边加入,用并查集维护,如果x和y在同一个并 ...
- PHP:函数和语言结构(转)
转自:https://www.cnblogs.com/fanqiechaodan/articles/5222366.html 什么是语言结构呢?它和函数有什么不同吗? 1. 什么是语言结构和函数 语 ...
- 【Python之路】特别篇--事件驱动与异步IO
通常,我们写服务器处理模型的程序时,有以下几种模型: (1)每收到一个请求,创建一个新的进程,来处理该请求: (2)每收到一个请求,创建一个新的线程,来处理该请求: (3)每收到一个请求,放入一个事件 ...
- JVM(七),JVM面试小知识
七.JVM面试小知识 1.JVM三大性能调优参数 -Xms -Xmx -Xss 的含义 2.java内存模型中堆和栈的区别 3.不同JDK版本中的intern()方法的区别
- TTTTTTTTTTTTT CDOJ 1136 邱老师玩游戏 树形dp
邱老师玩游戏 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit St ...
- Centos 7禁止ftdi_sio模块
$ dmesg[ 3305.097301] usb 1-1: USB disconnect, device number 7[ 3306.883704] usb 1-1: new high-speed ...