Python脱产8期 Day15 2019/4/30
一 生成器send方法
1.send的工作原理
# 1.send发生信息给当前停止的yield
# 2.再去调用__next__()方法,生成器接着往下指向,返回下一个yield值并停止
2.例:
- persons = ['张三', '李四', '王五', '赵六', '钱七']
- def order(persons): print('%s在面试' % persons[0]) print('%s面试完毕' % persons[0]) name = yield persons[0]
- print('%s叫%s在面试' % (name, persons[1])) print('%s面试完毕' % persons[1]) name = yield persons[1]
- print('%s叫%s在面试' % (name, persons[2])) print('%s面试完毕' % persons[2]) yield persons[2]
- obj = order(persons) # obj为面试开始的对象p = obj.__next__() # 张三print('==============================')p = obj.send(p)print('==============================')p = obj.send(p)
二 递归
1.递归含义:函数直接或间接调用本身,都称之为递归。
2.递归的2个过程:
# 回溯:找寻答案的过程
# 递推:推出结果的过程
2.递归的前提条件:
# 1.递归必须有出口
# 2.递归回溯递推的条件一定有规律
3.
# 案例一:获得第 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) ##54
三 匿名函数
1 匿名函数特点:
# 1.匿名函数没有函数名
# 2.匿名函数的关键字采用lambda
# 3.关键字 lambda 与标识函数功能体 : 之间一定是参数,所以省略()
# 4.匿名还是没有函数体,只有返回值,所以函数体和返回值的return关键字都省略了
2.语法规定:
lambda *args, **kwargs: '返回值'
3.注意:
- # 1.参数的使用和有名函数一样,六种形参都支持# 2.返回值必须明确成一个值,可以为单个值对象,也可以为一个容器对象
四 max结合匿名工作原理
1.语法规定:
max(iter, lambda x: x)
2.工作过程:
# 1.max内部会遍历iter,将遍历结果一一传给lambda的参数x
# 2.依据lambda的返回值作为比较条件,得到最大条件下的那个遍历值
# 3.对外返回最大的遍历值
3.# min工作原理一样,得到的是最小值
4.例:
- # max结合匿名函数dic = { 'owen': (1, 88888), 'zero': (2, 66666), 'tom': (3, 77777),}print(max(dic, key=lambda k: dic[k][1])) # 求薪资最大的人print(max(dic, key=lambda k: dic[k][0])) # 求员工号最大的人print(max(dic, key=lambda k: k)) # 求名字最大print('=====================')# minprint(min(dic, key=lambda k: dic[k][1])) # 求薪资最小的人print(min(dic, key=lambda k: dic[k][0])) # 求员工号最小的人print(min(dic, key=lambda k: k)) # 求名字最小
五 常用的内置函数
- # 1.与类型相关的# list() str() ord() chr() bool() int() ...
- print(ord('A'))print(chr(97))
- # 2.进制转化print(bin(10)) # 1010print(oct(10)) # 12print(hex(10)) # a
- print(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%3
- 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']
- # 6.获取帮助# help(dict)
Python脱产8期 Day15 2019/4/30的更多相关文章
- Python脱产8期 Day12 2019/4/26
一 函数默认值的细节 1.如果函数的默认参数的默认值为变量,在所属函数定义阶段一执行就被确定为当时变量存放的值 例: a = 100def fn(num=a): print(num) # 100a = ...
- Python脱产8期 Day10 2019/4/24
一 函数 1.定义:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数>>工具. 2.函数的优点:1.避免代码的冗余:2.让程序结构代码更加清晰:3.让代码更加具 ...
- Python脱产8期 Day03 2019/4/15
一 变量的命名规范 1.只能由 字母, 数字, _, 组成. 2. 不能以数字开头 3.避免与系统关键字重名:重名不会报错,但系统的功能就被自定义的功能屏蔽掉了(严重不建议这样来做) 4.以_开头的 ...
- Python脱产8期 Day13 2019/4/28
一 函数的嵌套定义 1在一个函数的内部定义另一个函数. 2.为什么有函数的嵌套定义: # 1)函数fn2想直接使用fn1函数的局部变量,可以讲fn2直接定义到fn1的内部,这样fn2就可以直接访问fn ...
- Python脱产8期 Day11 2019/4/25
一 字符串比较 1.字符串比较:字符串对应的ascii进行比较 2.多个字符的字符串进行比较:从前往后逐个字符进行比较,一旦哪个位置的字符出现了大小关系就结束比较. 二 形参与实参 1.参数介绍: 函 ...
- Python脱产8期 Day09 2019/4/23
内存管理 一.引用计数:垃圾回收机制的依据 1.变量的值被引用,该值的引用计数 +12.变量的值被解绑,该值的引用计数 -13.引用计数为0时就会被垃圾回收机制回收 二.引用计数会出现循环引用问题:相 ...
- Python脱产8期 Day08 2019/4/22
一.三种字符串 1.普通字符串:u'以字符作为输出单位‘ #print(u‘abc’)#用于显示 2.二进制字符串:b'以字节作为输出单位’#用于传输 3.原义字符串:r‘以字符作为输出单位,原样输 ...
- Python脱产8期 Day07 2019/4/19
一 数据类型的相互转化 1.哪些类型可以转换为数字类型 2.数字转换为字符串 print(str(10)) 3.字符串与列表相互转换 1.字符串转化为列表:list(字符串) 2.列表转换为字符串:' ...
- Python脱产8期 Day06 2019/4/18
一 深浅拷贝 例:ls = [1, 'abc', [10]] 1.值拷贝:s1 = ls # ls1直接将ls中存放的地址拿过来,>ls内部的值发生任何变化,ls1都会随之变化. 2.浅拷 ...
随机推荐
- java递归之“二叉树”
物有本末,事有始终,知所先后,则近道矣.-----题记. BotWong半路入行it做码农,也就半年时间,竟“不知天高地厚”地来到了深圳闯天下.一口气投了百个简历,一周后终于有公司邀约面试,除了基础的 ...
- delphi 实体类 JSON 数组
delphi 实体类 与JSON转换,序列化 TJson REST.JSON.pas TJson.JsonToObjectTJson.ObjectToJsonString JsonEncode O ...
- 跟我学算法-图像识别之图像分类(上)(基础神经网络, 卷积神经网络(CNN), AlexNet,NIN, VGG)
1.基础神经网络: 输入向量x,权重向量w, 偏置标量b, 激活函数sigmoid(增加非线性度) 优化手段: 梯度下降优化, BP向后传播(链式规则) 梯度下降优化: 1. 使用得目标函数是交叉熵 ...
- struts2配置默认首页
配置struts2 默认欢迎页的几种办法: 1.首先需要明确的是struts过滤器配置映射的模式是路径匹配还是扩展匹配,如果url-pattern配置为/*,如果不做特殊处理,是不会转到welcome ...
- maven 中的依赖
- lda spark 代码官方文档
http://spark.apache.org/docs/1.6.1/mllib-clustering.html#latent-dirichlet-allocation-lda http://spar ...
- 【Git】四、Git工作
一.Git创建仓库 版本库:代码仓库(repository),可以理解为一个项目的目录,在这个项目的目录中Git对每个文件进行管理,记录每个文件的增删改查记录,并能够追踪历史,在需要的时候可以回退到某 ...
- webkit com wrapper 推荐!
https://groups.google.com/forum/#!topic/microsoft.public.vb.general.discussion/ZaFY95aDZoY http://ww ...
- java同一个类中,构造器如何调用另一个重载的构造器?
构造器里面调用其它构造器,格式方法如下:1.使用this调用另一个重载构造器,只能在构造器中使用:2.必须写在构造器执行体的第一行语句: 示例如下: import static java.lang.S ...
- [Jmeter]如何才能通过ant运行jmeter
在开始运行build.xml之前,还有一步必须要做,那就是将JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.jar复制到Ant所在目录lib子目录之下,这样Ant运行时才 ...