Python函数基础(四)
2021/9/17 22:06:30
本文主要是介绍Python函数基础(四),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录(PS:觉得不错请点赞收藏支持一下)
- 一、lambda 表达式
- 二、高阶函数
- 三、任务清单
一、lambda 表达式
- 语法
lambda 参数列表: 表达式
- 举例
- 普通
""" 1. 使用 lambda 表达式定义了一个函数 2. 使用 lambda 表达式定义的函数没有名字(匿名函数) 3. 冒号后面是函数的返回值,不要使用 return 进行返回 """ f2 = lambda : 100 res = f2() print(res) # 100 """ 注意 > lambda 表达式的参数可有可无,函数的参数在 lambda 表达式中完全适用 > lambda 表达式能接收任何数量的参数但只能返回一个表达式的值 """
- 求和
""" 在 lambda 关键字和冒号之间是函数的参数(可以是多个参数) """ f4 = lambda a: a + 100 res = f4(100) print(res) # 200 f6 = lambda a,b: a + b res = f6(10,20) print(res) # 30
- 参数
# 可变参数 f1 = lambda *args: sum(args) print(f1(1,2,3,4,5)) # 15 f2 = lambda **kwargs: kwargs print(f2(name='张三',age=20)) #{'name': '张三', 'age': 20}
- 进阶练习
# 判断大小 compare = lambda a,b: a if a > b else b print(compare(10,66)) # 66 # 按照人的年龄进行排序 students = [{'name': 'TOM', 'age': 20}, {'name': 'ROSE', 'age': 19}, {'name':'Jack', 'age': 22}] students.sort(key= lambda age: age['age']) print(students) # 运行结果: # [{'name': 'ROSE', 'age': 19}, {'name': 'TOM', 'age': 20}, {'name': 'Jack', 'age': 22}]'
- 总结
lambda 表达式的认识 1. lambda 表达式的函数是匿名函数 2. lambda 表达式是为了简化函数的定义 3. lambda 表达式冒号后面只能有一行代码,原因是冒号后面的代码就是普通函数 return 后面内容 lambda 表达式与普通函数的对比 1. lambda 方式不用为函数起名字 2. lambda 方式一行代码搞定 3. 对于只使用 1 次的函数,没必要单独定义,使用 lambda 方式非常快捷
二、高阶函数
解释说明:如果一个函数的参数是函数,此函数就叫做高阶函数。
- 只定义一个函数,就可以都执行加减乘除运算
def do_everything(a,b,fn): return fn(a,b) print(do_everything(10,5,lambda n1,n2: n1 + n2)) # 15 print(do_everything(10,5,lambda n1,n2: n1 - n2)) # 5 print(do_everything(10,5,lambda n1,n2: n1 * n2)) # 50 print(do_everything(10,5,lambda n1,n2: n1 / n2)) # 2.0
三、任务清单
- 写函数,接收n个数字,返回所有参数的和(使用 lambda 表达式改写函数)
f1 =lambda *args: sum(args) print(f1(10,20,30)) # 60
- 定义一个函数,接受一个列表作为参数,找到这个列表中下标为奇数对应的元素,放到一个新列表中,并将其作为返回值返回(使用 lambda 表达式改写函数)
f1 = lambda list1: [list1[i] for i in range(len(list1)) if i % 2 != 0] print(f1(['张三','法外狂徒','小明','老王',True,666])) # ['法外狂徒', '老王', 666]
- 写一个函数,参数为一个列表,返回列表中的前两个元素(放到一个新列表中即可)(使用 lambda 表达式改写函数)
f1 = lambda list1: list1[:2] if len(list1) > 2 else list1 print(f1(['张三','法外狂徒','小明','老王',True,666])) # ['张三', '法外狂徒']
- 写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组。例如:[(‘红心’,2), (‘草花’,2), …(‘黑桃,‘A’)]。
f1 = lambda list1,list2:[(x,y) for x in list1 for y in list2] print(f1(['红心','草花','方块','黑桃'],[2,3,4,5,6,7,8,9,10,'J','Q','K','A']))
- 写函数,传入n个数,返回字典:{‘max’:最大值,’min’:最小值}。例如: min_max(2, 5, 7, 8, 4),返回: {‘max’:8,’min’:2}。
f1 = lambda *args: {'max':max(args),'min':min(args)} print(f1(2, 5, 7, 8, 4)) # {'max': 8, 'min': 2}
- 写函数,专门计算图形的面积。其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积(高阶函数练习)。
def result(x,y,fn): return fn(x,y) print(result(2,5,lambda x,y: x * y ** 2)) # 圆的面积 print(result(2,5,lambda x,y: x ** 2)) # 正方形的面积 print(result(2,5,lambda x,y: x * y)) # 长方形的面积
- 生成20个斐波那契数列:[1,1,2,3,5,8,13,…],每个元素为前两个元素之和。
fib = lambda n: n if n < 2 else fib(n - 1) + fib(n - 2) listData = [fib(i) for i in range(1,21)] print(listData)
- 已知有个列表[1,2,3,4,5],让列表的每个元素加1,把结果不能被2整除的元素筛选出来。
f1 = lambda list1: [i for i in list1 if (i+1) % 2 != 0] print(f1([1,2,3,4,5])) # [2, 4]
这篇关于Python函数基础(四)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南