一、生成器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# 第 九...一 个人 - 2age = get_age(count - 1) - 2return 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! = 1
def jiecheng(n):if n == 1 or n == 0:return 1ji = n * jiecheng(n - 1)return ji
res = 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)  # (<function <lambda> at 0x0000022D0B7E88C8>, '返回值2')
# 返回值1
print(a[0]())
def fn():    return '返回值1', '返回值2'a = lambda *args, **kwargs: fn()
# 正确返回两个值: 主动构成成容器类型 lambda *args, **kwargs: ('返回值1', '返回值2')

四、匿名函数的应用

# 1.用变量接收,该变量就存放了匿名函数的函数地址
#       -- 函数又有名字了,用完也不能被回收了,匿名函数匿名也没意义了
"""
add = lambda n1, n2: n1 + n2
print(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 reduce
res = 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))  # 1010
print(oct(10))  # 12
print(hex(10))  # aprint(0b1111)  # 15
print(0o10)  # 8
print(0x11)  # 17
from 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**3
print(pow(2, 3, 3))  # 2**3%3

dic = {'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

初学python之路-day15相关推荐

  1. 初学python之路-day10

    基础部分先告一段落,今天开始学习函数. 一.函数:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数         -- 现实中:很多问题要通过一些工具进行处理 => ...

  2. 初学python之路-day18

    time时间模块 时间戳(timestamp):time.time() 延迟线程的运行:time.sleep(secs) (指定时间戳下的)当前时区时间:time.localtime([secs]) ...

  3. 初学python之路-day20

    logging模块 # 日志:日常的流水 => 日志文件,将程序运行过程中的状态或数据进行记录,一般都是记录到日志文件中 # 在正常的项目中,项目运行的一些打印信息,采用looging打印到文件 ...

  4. 初学python之路-day04

    每天一篇总结,今天学习的是有关于流程控制的知识. 流程控制,顾名思义,在计算机运行中,程序是被某种控制方式按照某种流程或者规律来执行的.而python程序的运行,肯定也是按照某种规律在执行.这些规律可 ...

  5. 初学python之路-day11

    一.函数的参数:实参与形参 # 参数介绍: # 函数为什么要有参数:因为内部的函数体需要外部的数据 # 怎么定义函数的参数:在定义函数阶段,函数名后面()中来定义函数的参数 # 怎么使用函数的参数:在 ...

  6. python之路——模块和包

    一.模块 1.什么是模块? 常见的场景:一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用Python编 ...

  7. python 之路,Day11 (下)- sqlalchemy ORM

    python 之路,Day11 - sqlalchemy ORM 本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 1. ORM介绍 ...

  8. Python之路【第五篇】:面向对象及相关

    Python之路[第五篇]:面向对象及相关 Python之路[第五篇]:面向对象及相关 面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance ...

  9. 初学python的30个操作难点汇总(入门篇)希望对你有帮助

    初学Python的人总会遇到这样或者那样的问题,在我学习Python的这段时间我总结了自己的29个问题,具体如下: 1 在cmd下 盘与盘之间的切换 直接 D或d: 就好 2 查找当前盘或者文件下面的 ...

最新文章

  1. SpringMVC注解整理
  2. HDU 1052 Tian Ji -- The Horse Racing
  3. leetcode算法题--统计全为 1 的正方形子矩阵
  4. spring中注解无法修饰静态变量
  5. c 语言程序设计现代方法:13章习题自己编答案(持续更新)
  6. Android Github 资源目录
  7. Flask-admin 学习及一些笔记
  8. Keras框架:resent50代码实现
  9. pytorch ——模型创建与nn.Module
  10. mysql dba命令_mysql DBA:mysqladmin常用命令总结
  11. ibatis 存储过程 结果集 map_「大数据」(七十五)Spark之弹性分布式数据集
  12. mysql高效索引覆盖索引_MySQL高效索引:覆盖索引
  13. 计算机等级的判断,计算机等级考试一级WPS判断题及答案
  14. mybatisplus activerecord之mybatisplus entity XXX Not Found TableInfoCache.错误
  15. cad帧数测试软件,怎样让cad运行速度更快_cad如何设置运行更流畅
  16. CRC32的C语言源代码
  17. python语言的单行注释以单引号开头_知到智慧树大数据分析的python基础(山东联盟)(1)答案章节期末答案...
  18. 一套新能源汽车动力电池热管理热仿真攻略
  19. 在vb.net中运用多线程实现远程数据收集
  20. 综合项目之闪讯破解(四)之 如何用C++编写可被C#调用的Dll

热门文章

  1. 使用decode函数
  2. Spring-Data-Redis存储对象(redisTemplate)
  3. Sigar - no sigar-amd64-winnt.dll in java.library.path
  4. Linux后台运行jar不产生nohup.out
  5. Android开发笔记(二十四)res目录的结构与配置
  6. uc点网页显示服务器升级,让uc浏览器网页加载速度提升100%
  7. apimodel 可以重复吗_Web API是否需要有ViewModels层类?
  8. Python基础(10) Python创建list
  9. 最便宜的那款特斯拉,刚刚喜提“最安全汽车”称号(然后被打脸)
  10. contenteditable获得焦点后的边框设置