ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

day15

2019-04-30 20:53:45  阅读:195  来源: 互联网

标签:函数 persons age day15 print 返回值 lambda


                                               今日所学内容

生成器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)

 

递归

 递归:
函数直接或间接调用本身,都称之为递归
回溯:找寻答案的过程
递推:推出结果的过程

前提条件:
1.递归必须有出口
2.递归回溯递推的条件一定有规律


案例一:获得第 count 个人的年纪
def get_age(count):
    if count == 1:
        return 58
    # 第 九...一 个人 - 2
    age = get_age(count - 1) - 2
    return age
​
age = get_age(3)
print(age)
​
​
# 案例二:求n的阶乘  5! = 5 * 4 * 3 * 2 * 1 = 120
# 5! = 5 * 4!
# 4! = 4 * 3!
# 3! = 3 * 2!
# 2! = 2 * 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)

匿名函数

def fn(*args, **kwargs):
    # 函数体
    return '返回值'
​
# 匿名函数:
# 1.匿名函数没有函数名
# 2.匿名函数的关键字采用lambda
# 3.关键字 lambda 与标识函数功能体 : 之间一定是参数,所以省略()
# 4.匿名还是没有函数体,只有返回值,所以函数体和返回值的return关键字都省略了
​
lambda *args, **kwargs: '返回值'
​
# 注意:
# 1.参数的使用和有名函数一样,六种形参都支持
# 2.返回值必须明确成一个值,可以为单个值对象,也可以为一个容器对象
​
a = lambda *args, **kwargs: '返回值1', '返回值2'
print(a)  # (<function <lambda> at 0x0000022D0B7E88C8>, '返回值2')
# 返回值1
print(a[0]())
​
​
# 正确返回两个值: 主动构成成容器类型
lambda *args, **kwargs: ('返回值1', '返回值2')

 

 

max结合匿名工作原理

 1.max内部会遍历iter,将遍历结果一一传给lambda的参数x
2.依据lambda的返回值作为比较条件,得到最大条件下的那个遍历值
3.对外返回最大的遍历值
max(iter, lambda x: x)


# min工作原理一样,得到的是最小值

 

常用的内置函数

map(lambda x: x * 2, [3, 1, 2]) # 将遍历结果映射为任意类型值 [6, 2, 4]
​
from functools import reduce
reduce(lambda x, y: x * y, [3, 1, 2])  # 6
​
sorted(iter, fn, reverse)
dic = {
    'owen': (1, 88888),
    'zero': (2, 66666),
    'tom': (3, 77777),
}
res = sorted(dic, key=lambda k: dic[k][1])
print(res)  # ['zero', 'tom', 'owen']
​
res = sorted(dic, key=lambda k: dic[k][1], reverse=True)
print(res)  # ['owen', 'tom', 'zero']
​
​
# 1.与类型相关的
# list() str() ord() chr() bool() int() ...
​
print(ord('A'))
print(chr(97))
​
# 2.进制转化
print(bin(10))  # 1010
print(oct(10))  # 12
print(hex(10))  # a
​
print(0b1111)  # 15
print(0o10)  # 8
print(0x11)  # 17
​
​
# 3.常用操作类的
# range() len() iter() next() enumerate() id() type() print() input() open()
​
# 4.原义字符串
print(r'a\nb')
print(ascii('a\nb'))
print(repr('a\nb'))
​
​
# 5.数学相关运算
# abs() sum() max() min() pow() sorted()
print(abs(-1))
print(pow(2, 3))  # 2**3
print(pow(2, 3, 3))  # 2**3%3
​

标签:函数,persons,age,day15,print,返回值,lambda
来源: https://www.cnblogs.com/WBaiC1/p/10798004.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有