三元表达式、列表推导式和递归函数的亮点剖析
1.三元表达式
三元表达式等同于三目表达式,就是简单的if......else.....控制器的语法糖。
# 就是if....else的语法糖 cmd = input('cmd:>>>>>') if cmd.isdigit(): print('可以转换为数字') else: print('不可以装换为数字') # 前提是只有一条语句 print('keyi') if cmd.isdigit() else print('no') # 得到两个数中最大值 a = 30 b = 20 res = a if a > b else b print(res) # 三元运算符的结果不一定要和条件有 直接性 关系 按照绣球 msg = b if a > b else a print(msg) def max(a, b): res = a if a > b else b return res msg = max(12, 5) print(msg)
2.列表(元组)推导式
列表(元组)推导式,就是列表(元组)和字典类型之间的转换。
dic = {'a': 1, 'b': 2, 'c': 3} # 列表、元组和字典之间的转换的语法糖 res = [(k, v) for k, v in dic.items()] print(res) # 输出结果为:[('a':1),('b':2),('c':3)] print('====================================') ls = [('a', 1), ('b', 2), ('c', 3)] res = {k: v for k, v in ls} print(tuple(res)) # 输出结果为: ('a','b','c') print('====================================') print(res) # 输出结果为:[('a':1),('b':2),('c':3)] print('====================================') # 案例 res = [age for age in range(1, 10)] print(res) # 输出结果为: [1,2,3,4,5,6,7,8,9] print('====================================') # res = {'a': age for age in range(1, 10)} print(res) # 输出结果为: {'a':9} print('====================================') # p = [3, 4, 5, 62, 5, 6, 7] res = {k: v for k, v in enumerate(p)} print(res) # 输出结果为:(0:3,1:4,2:5,3:63,4:5,5:6,6:7) print('====================================') # l1 = [1, 2, 3, 4, 5, 6] res = {res for res in l1} print(res) # 输出结果为: [1,2,3,4,5,6]
3.递归函数
递归函数:回溯:询问答案的过程
递推:推出答案的过程
# 前提:**** # 回溯到一个有具体的结果的值,开始递推 # 回溯和递推的条件要有规律 # 递归本质就是函数的自我调用 def a(): pass def b(): pass def c(): pass
递归案例:
# 询问第一个人年龄,回溯条件小两岁,第5个人说出自己的年龄 # 推导出第一个人的年龄 def get_age(num): if num == 1: return 58 age = get_age(num - 1) - 2 return age res = get_age(5) print(res) # 输出结果为: 50 # 递归函数的使用 # 5! = 5*4! # 4! = 4*3! def favtorial(num): if num == 1: return 1 return num * favtorial(num - 1) res = favtorial(5) print(res) # 输出结果为: 120
4.匿名函数
# 匿名函数就是没有名字的函数 def func(x,y,z=1): return x+y+z # 匿名函数的写法,使用lambda关键字 func = lambda x,y,z=1:x+y+z func(1,2,3) # 既然是匿名函数,如果有名字了那么就没有意思了。
# 没有函数名,没有函数体的。
f = lambda x, y: x + y
print(f)
print(f(10, 20))
res = max(10, 20, 30, 50)
print(res)
def fn(v):
print(v)
return v
ls = [20, 100, 200, 50]
res = max(ls, key=fn)
print(res)