高阶函数 & 三元表达式
总结 📋
高阶函数是Python函数式编程的重要组成部分,主要包括:
- Lambda表达式:创建简洁的匿名函数
- 三元表达式:简化条件判断
- map():对序列元素应用函数
- filter():过滤序列元素
- reduce():累积处理序列元素
- sorted():排序序列元素,并返回新序列
- any():检查序列元素是否有一个满足条件
- all():检查序列元素是否都满足条件
- zip():将多个序列打包成一个元组序列
- enumerate():为可迭代对象添加索引计数器
高阶函数(闭包) 🎯
高阶函数(闭包)是指接受函数作为参数或者返回函数的函数。在Python中,函数是一等公民,可以像变量一样传递和操作。
闭包的函数寻找作用域,是从函数定义的时候寻找的
Lambda 表达式 ⚡
Lambda表达式是创建匿名函数的简洁方式,特别适用于简单的单行函数。
语法格式
lambda 参数: 表达式
基本用法
注意:Lambda表达式只能包含表达式,不能包含语句(如print、赋值等)
三元表达式 🔀
三元表达式(条件表达式)是if-else语句的简化形式,用于根据条件返回不同的值。
语法格式
条件为真时返回的结果 if 条件判断 else 条件为假时的返回结果
基本用法
建议:三元表达式适用于简单的条件判断,复杂逻辑建议使用传统if-else语句
内置高阶函数 🛠️
map()
将指定函数应用到可迭代对象的每个元素上,返回一个map对象(迭代器)。
语法格式
map(function, iterable, ...)
基本用法
多个可迭代对象
filter() 🔍
filter()函数用于过滤序列,返回满足条件(必须返回布尔值)的元素组成的迭代器。
语法格式
filter(function, iterable)
基本用法
reduce() 🔄
reduce()函数对序列中的元素累积应用函数,将序列减少为单个值。
注意:从Python 3开始,reduce()被移到了
functools
模块中
导入和语法
from functools import reduce
reduce(function, iterable[, initializer])
基本用法
带初始值
sorted()
sorted()函数返回一个新的已排序列表,不修改原列表。
语法格式
sorted(iterable, key=None, reverse=False)
基本用法
any() 和 all() ✅
any() 和 all() 用于检查可迭代对象中元素的真值。
# any() - 任意一个为True就返回True
numbers = [0, 0, 1, 0]
print(any(numbers)) # True
# all() - 所有元素都为True才返回True
numbers = [1, 1, 1, 1]
print(all(numbers)) # True
# 实际应用
scores = [85, 92, 78, 96, 88]
# 检查是否有人不及格
has_failed = any(score < 60 for score in scores)
print(has_failed) # False
# 检查是否所有人都及格
all_passed = all(score >= 60 for score in scores)
print(all_passed) # True
zip() 🤐
zip()函数将多个可迭代对象打包成元组。
enumerate() 📝
enumerate()函数为可迭代对象添加索引计数器。