Python函数式编程利用lambda与高阶函数提升代码简洁性
```python
# Python函数式编程:lambda与高阶函数的简洁艺术
# 1. lambda表达式基础应用
# 传统函数定义
def square(x):
return x 2
# lambda等价写法
square_lambda = lambda x: x 2
# 立即执行lambda
result = (lambda x, y: x + y)(3, 5)
print(f立即执行结果: {result})
# 2. 结合高阶函数提升代码简洁性
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 使用map进行转换
squared_numbers = list(map(lambda x: x2, numbers))
print(f平方数: {squared_numbers})
# 使用filter进行过滤
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(f偶数: {even_numbers})
# 使用reduce进行累积计算
from functools import reduce
product = reduce(lambda x, y: x y, numbers)
print(f乘积: {product})
# 3. 复杂数据处理场景
data = [
{'name': 'Alice', 'age': 25, 'score': 85},
{'name': 'Bob', 'age': 30, 'score': 92},
{'name': 'Charlie', 'age': 22, 'score': 78}
]
# 按分数排序
sorted_by_score = sorted(data, key=lambda x: x['score'], reverse=True)
print(按分数排序:, sorted_by_score)
# 提取特定字段
names = list(map(lambda x: x['name'], data))
print(f姓名列表: {names})
# 条件过滤
high_scorers = list(filter(lambda x: x['score'] > 80, data))
print(f高分者: {high_scorers})
# 4. 函数组合与管道操作
def compose(functions):
return reduce(lambda f, g: lambda x: f(g(x)), functions)
# 创建处理管道
process = compose(
lambda x: x 2, # 乘以2
lambda x: x + 10, # 加10
lambda x: x 2 # 平方
)
print(f管道处理结果: {process(5)})
# 5. 偏函数应用
from functools import partial
# 创建特定功能的函数
multiply_by_3 = partial(lambda x, y: x y, 3)
result = multiply_by_3(7)
print(f偏函数应用: {result})
# 6. 条件lambda与复杂逻辑
categorize = lambda age: 青年 if age < 30 else 中年 if age < 50 else 老年
ages = [25, 35, 45, 55, 65]
categories = list(map(categorize, ages))
print(f年龄分类: {categories})
# 7. 嵌套数据结构处理
nested_data = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
flattened = reduce(lambda acc, lst: acc + lst, nested_data, [])
print(f扁平化结果: {flattened})
# 8. 字典处理技巧
word_count = {'apple': 3, 'banana': 1, 'orange': 2}
sorted_words = dict(sorted(word_count.items(), key=lambda x: x[1], reverse=True))
print(f按词频排序: {sorted_words})
# 9. 多条件排序
students = [
{'name': 'Alice', 'grade': 'A', 'age': 20},
{'name': 'Bob', 'grade': 'B', 'age': 22},
{'name': 'Charlie', 'grade': 'A', 'age': 19}
]
# 先按年级,再按年龄排序
multi_sorted = sorted(students, key=lambda x: (x['grade'], x['age']))
print(多条件排序:, multi_sorted)
# 10. 性能考虑与最佳实践
# 对于简单操作使用lambda,复杂逻辑仍建议使用def
# 避免过长的lambda表达式,保持可读性
# 总结:lambda与高阶函数的优势
# - 代码更简洁,减少样板代码
# - 函数作为一等公民,提升灵活性
# - 更好的表达数据处理流水线
# - 提高代码的函数式纯度
```
更多推荐
所有评论(0)