博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初学python之路-day15
阅读量:4677 次
发布时间:2019-06-09

本文共 3185 字,大约阅读时间需要 10 分钟。

一、生成器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.递归回溯递推的条件一定有规律
# 案例一:获得第 count 个人的年纪def get_age(count):    if count == 1:        return 58    # 第 九...一 个人 - 2    age = get_age(count - 1) - 2    return ageage = 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! = 1def jiecheng(n):    if n == 1 or n == 0:        return 1    ji = n * jiecheng(n - 1)    return jires = jiecheng(5)print(res)

三、匿名函数

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

四、匿名函数的应用

# 1.用变量接收,该变量就存放了匿名函数的函数地址#       -- 函数又有名字了,用完也不能被回收了,匿名函数匿名也没意义了"""add = lambda n1, n2: n1 + n2print(add(10, 20))
# 2.结合内置函数来使用# max:工作原理print(max(10, 2000, 300, 5))print(max('azbd'))max结合匿名工作原理:max(iter, lambda x: x)# 1.max内部会遍历iter,将遍历结果一一传给lambda的参数x# 2.依据lambda的返回值作为比较条件,得到最大条件下的那个遍历值# 3.对外返回最大的遍历值 # min结合匿名工作原理一样,得到的是最小值
 

五、map与reduce

# map:映射# def fn(x):#     return x * 2# res = map(fn, [3, 1, 4, 2, 5])# print(list(res))dic = {    'owen': 3,    'zero': 5}res = map(lambda k: (k, dic[k] * 2), dic)print(list(res))  # [('owen', 6), ('zero', 10)]# for v in res:#     print(v)
# reduce:合并from functools import reduceres = reduce(lambda x, y: x + y, [3, 1, 2, 4, 5])  # 所以元素的和print(res)res = reduce(lambda x, y: x * y, [3, 1, 2, 4, 5])  # 所有元素的积print(res)print(sum([3, 1, 2, 4, 5]))

六、常用的内置函数

# 1.与类型相关的# list() str() ord() chr() bool() int() ...print(ord('A'))print(chr(97))# 2.进制转化print(bin(10))  # 1010print(oct(10))  # 12print(hex(10))  # aprint(0b1111)  # 15print(0o10)  # 8print(0x11)  # 17from functools import reduce# 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**3print(pow(2, 3, 3))  # 2**3%3dic = {    'owed': (1, 88888),    'zdds': (2, 66666),    'tom': (3, 77777),}res = sorted(dic, key=lambda k: dic[k][1])print(res)  # ['zdds', 'tom', 'owed']res = sorted(dic, key=lambda k: dic[k][1], reverse=True)print(res)  # ['owed', 'tom', 'zdds']

 

转载于:https://www.cnblogs.com/wangwei5979/p/10796814.html

你可能感兴趣的文章
安卓启动相关以及架构设计相关
查看>>
第十四届华中科技大学程序设计竞赛--J Various Tree
查看>>
python面试题No2
查看>>
插入排序
查看>>
.Net Core + NGINX跳转登录时端口丢失
查看>>
C#实现对文件目录的实时监控
查看>>
Python3 序列解包
查看>>
「Linux」VMware安装centos7(一)
查看>>
Java中模拟POST上传文件
查看>>
Ubuntu 中sendmail 的安装、配置与发送邮件的具体实现
查看>>
时隔2月,我的第二篇
查看>>
[导入]C++ OpenGL底层和C# GUI无缝联合!
查看>>
调试程序Bug-陈棚
查看>>
STM32 寄存器库和固件库
查看>>
第11周表格
查看>>
linux运维云计算课程学习,Linux云计算面试时遇到的问题
查看>>
Abiword对话框资源
查看>>
跟我一起写 Makefile
查看>>
C# uri
查看>>
GPS定位 测试
查看>>