Python--day15(生成器send方法、递归函数、匿名函数、内置函数)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python--day15(生成器send方法、递归函数、匿名函数、内置函数),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3628字,纯文字阅读大概需要6分钟。
内容图文
![Python--day15(生成器send方法、递归函数、匿名函数、内置函数)](/upload/InfoBanner/zyjiaocheng/830/6cd4b3544e134de19f9f803cca11e8f6.jpg)
今日主要内容
1. 生成器的send方法 (l)
2. 递归:函数自己调自己
3. 匿名函数
4. 内置函数
1. 生成器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)
==>>>>>
张三在面试
张三面试完毕
张三叫李四去面试
李四面试完毕
李四叫王五去面试
王五面试完毕
王五叫赵六去面试
赵六面试完毕
赵六叫钱七去面试
钱七面试完毕
2. 递归
递归:函数直接或者间接调用本身,都称之为递归
回溯:找寻答案的过程
递推:推出结果的过程
前提条件:1. 递归必须有出口 2. 递归回溯递推的条件一定有规律
递归调用一次次调用下去,说白了就是一个重复的过程,但需要注意的是每一次重复问题的规模都应该有所减少,知道得到一个最终的结果,所以递归在回溯阶段要有一个明确的结束条件
# 案例一 获得第count个人的年龄
def get_age(count):
if count == 1:
return 20
age = get_age(count - 1) - 2 # age(n) = age(n-1) - 2
return age
print(get_age(5)) # 12
# 案例二 求n的阶乘 n! = n * (n - 1)!
def jiecheng(n):
if n == 1 or n == 0:
return 1
ji = jiecheng(n - 1) * n
return ji
print(jiecheng(5)) # 120
3. 匿名函数
3.1 匿名函数:
1. 匿名函数没有函数名
2. 匿名函数的关键字采用lambda
3. 关键字: lambda与标识函数体功能 :之间一定是参数,所以省略()
4. 匿名还没有函数体,只有返回值,所以函数体和返回值的return关键字省略了
3.2 匿名函数的基本格式:lambda *args,**kwargs:"返回值"
【注意】
1. 参数的使用和有名函数一样,六种形参都支持
2. 返回值必须明确成一个值,可以单个值对象,也可以为一个容器对象
错误示范:
a = lambda *args,**kwargs: '返回值1','返回值2'
print(a) # (<function <lambda> at 0x0000024B27DB9950>, '返回值2')
正确示范:
a = lambda *args,**kwargs: ('返回值1','返回值2' )
print(a) # <function <lambda> at 0x000001E8B1A099D8>
3.3 max函数原理
基本格式:
dic = {
'owen': (1, 88888),
'zero': (2, 66666),
'tom': (3, 77777),
}
def func(k):
# return k # zero
# return dic[k][0] # tom
# return dic[k][1] # owen
res = max(dic,key = func)
print(res)
max函数:通过max函数的key参数来改变max函数的比较依据
运行原理:max函数会"for循环"出一个值,然后将该值传key指定的函数
调用key指定的函数,将拿到的返回值当作比较依据
3.4 max结合匿名工作
1. max内部会遍历iter(可迭代对象),将遍历结果一一传给lambda的参数x
2. 依据lambda的返回值作为比较条件,得到最大条件下的那个遍历值
3. 对外返回最大的遍历值
dic = {
'owen': (1, 88888),
'zero': (2, 66666),
'tom': (3, 77777),
}
print(max(dic,key = lambda k:k)) # 求名字最大 zero
print(max(dic,key = lambda k: dic[k][0] )) # 求员工编号最大 tom
print(max(dic,key = lambda k: dic[k][1] )) # 求薪资最大 owen
4. 常用的内置函数
map函数:把一个列表按照我们自定义的映射规则映射成一个新的列表
res = map(lambda k: k * 2, [3,1,2]) # 将遍历结果映射成任意类型
print(list(res)) # [6, 2, 4]
res = map(lambda k: k + '123',['wangyong','qwer'])
print(list(res)) # ['wangyong123', 'qwer123']
dic = {
'owen': 3,
'zero': 5
}
res = map(lambda k:(k,dic[k]),dic)
print(list(res)) # [('owen', 3), ('zero', 5)]
reduce函数:把多个值合并成一个结果
from functools import reduce
print(reduce(lambda x, y: x * y, [3, 5, 2])) # 30
sorted函数:排序
res = sorted(dic,key=lambda k: dic[k][1], reverse=True)
print(res) # ['owen', 'tom', 'zero']
内容总结
以上是互联网集市为您收集整理的Python--day15(生成器send方法、递归函数、匿名函数、内置函数)全部内容,希望文章能够帮你解决Python--day15(生成器send方法、递归函数、匿名函数、内置函数)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。