今日内容

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

最新文章

  1. spark快速大数据分析学习笔记*初始化sparkcontext(一)
  2. storm 源码笔记
  3. ubuntu15.10下编译安装wine1.8 rc4
  4. GWT入门学习之下载安装
  5. Codeforces 451E Devu and Flowers(组合计数)
  6. 夺命雷公狗---2016-linux---1之ip的配置
  7. loading-show-hide
  8. 非常棒的jqChart图表插件
  9. java获取当前方法
  10. Android为TV端助力 转载弩的博客
  11. CF 489C 暴力处理
  12. python之对象(实例)
  13. abp xunit Can not register IHostingEnvironment. It should be a non-abstract class. If not, it should be registered before.”
  14. ionic 页面传递参数
  15. 自然语言处理之Levenshtien Distance算法研究
  16. vlan交换机的端口模式有哪几种
  17. margin显示怪异,外边距合并问题
  18. iOS开发debug跟release版本NSLog屏蔽方法
  19. 基于visual studio 2017 以及cubemx 搭建stm32的开发环境(0)
  20. maven项目将web2.5改为web3.1

热门文章

  1. HDU 6038 - Function | 2017 Multi-University Training Contest 1
  2. 携程apollo分布式配置中心
  3. HGOI 20190828 题解
  4. 【UOJ#228】 基础数据结构练习题
  5. Java当中的IO流-时间api(下)-上
  6. IT公司技术博客地址
  7. mysql gis基本使用
  8. 深入聚焦 call,apply 和 bind
  9. win10 c++程序打包
  10. ACCESS_ONCE的作用