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.返回值必须明确成一个值,可以为单个值对象,也可以为一个容器对象
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('=====================')
# min
print(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)) # 1010
print(oct(10)) # 12
print(hex(10)) # a
print(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 = {
'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)