【Python进阶】一篇例子带你深入了解Python的匿名函数!!!附带源码

例子:
这个例子将是一个简单的“学生成绩管理系统”的片段,我们将使用lambda函数来处理学生的成绩数据。结合了匿名函数(lambda函数)与Python中的其他概念,如列表推导式、高阶函数(如filtersorted)以及可能的自定义函数。

场景描述

假设我们有一个学生列表,每个学生都是一个包含姓名、年龄和成绩(列表形式,因为可能有多门课)的字典。我们需要:

  1. 筛选出所有成绩平均分超过60分的学生。
  2. 对这些学生按照他们的最高分进行排序。
  3. 打印出排序后学生的姓名和他们的最高分。

代码实现

# 学生列表,每个学生包含姓名、年龄和成绩(多门课)  
students = [  
    {"name": "Alice", "age": 20, "grades": [78, 82, 85]},  
    {"name": "Bob", "age": 22, "grades": [55, 60, 65]},  
    {"name": "Charlie", "age": 21, "grades": [88, 92, 95]},  
    {"name": "David", "age": 19, "grades": [45, 50, 55]},  
]  
  
# 使用lambda函数和filter筛选出平均分超过60分的学生  
passing_students = filter(lambda student: sum(student['grades']) / len(student['grades']) > 60, students)  
  
# 使用列表推导式将filter对象转换为列表,便于后续操作  
passing_students_list = list(passing_students)  
  
# 使用sorted函数和lambda函数对筛选后的学生进行排序,按照最高分降序  
sorted_students = sorted(passing_students_list, key=lambda student: max(student['grades']), reverse=True)  
  
# 使用列表推导式打印出每个学生的姓名和最高分  
for student in sorted_students:  
    print(f"{student['name']}: 最高分 {max(student['grades'])}")  
  
# 输出:  
# Charlie: 最高分 95  
# Alice: 最高分 85  
# Bob: 最高分 65

分析

  1. 筛选:我们使用filter函数和一个lambda函数来筛选出平均分超过60分的学生。这个lambda函数接收一个学生字典作为参数,计算学生的平均分,并与60进行比较。

  2. 排序:然后,我们使用sorted函数和一个lambda函数对筛选后的学生进行排序。这个lambda函数提取每个学生的最高分作为排序的依据,并通过设置reverse=True来实现降序排序。

  3. 输出:最后,我们使用列表推导式遍历排序后的学生列表,并打印出每个学生的姓名和他们的最高分。

这个例子展示了lambda函数在处理复杂数据结构(如嵌套字典和列表)时的灵活性和强大功能。它们与Python中的其他高阶函数(如filtersorted)结合使用时,可以编写出既简洁又高效的代码。

最后,如果你也想自学Python,可以关注我。我会把踩过的坑分享给你,让你不要踩坑,提高学习速度,还整理出了一套系统的学习路线,这套资料涵盖了诸多学习内容:开发工具,基础视频教程,项目实战源码,51本电子书籍,100道练习题等。相信可以帮助大家在最短的时间内,能达到事半功倍效果,用来复习也是非常不错的。

  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值