Python函数式编程探索lambda、map与filter的妙用
```python
# Python函数式编程探索:lambda、map与filter的妙用
# 1. lambda匿名函数的简洁之美
# lambda函数是一种快速定义单行函数的方法,适用于简单的函数操作
square = lambda x: x 2
add = lambda x, y: x + y
# 示例应用
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x x, numbers))
print(f平方运算: {squared_numbers})
# 2. map函数的批量转换能力
# map(function, iterable) 对可迭代对象中的每个元素应用函数
names = ['alice', 'bob', 'charlie']
capitalized_names = list(map(str.capitalize, names))
print(f首字母大写: {capitalized_names})
# 结合lambda使用
temperatures_c = [0, 20, 30, 40]
temperatures_f = list(map(lambda c: c 9/5 + 32, temperatures_c))
print(f摄氏度转华氏度: {temperatures_f})
# 3. filter函数的筛选魔力
# filter(function, iterable) 根据函数条件筛选元素
numbers = range(1, 11)
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(f偶数筛选: {even_numbers})
# 筛选字符串
words = ['apple', 'banana', 'cherry', 'date', 'elderberry']
long_words = list(filter(lambda word: len(word) > 5, words))
print(f长单词筛选: {long_words})
# 4. 组合使用的强大威力
# lambda + map + filter 的组合应用
mixed_data = [1, 'a', 2, 'b', 3, 'c', 4, 'd']
# 筛选数字并计算平方
squared_numbers = list(
map(lambda x: x 2,
filter(lambda x: isinstance(x, int), mixed_data))
)
print(f组合应用结果: {squared_numbers})
# 5. 实际应用场景
# 数据处理
students = [
{'name': 'Alice', 'score': 85},
{'name': 'Bob', 'score': 92},
{'name': 'Charlie', 'score': 78},
{'name': 'David', 'score': 95}
]
# 筛选高分学生
high_scorers = list(filter(lambda s: s['score'] > 90, students))
print(f高分学生: {high_scorers})
# 提取学生姓名
names = list(map(lambda s: s['name'], students))
print(f学生姓名: {names})
# 6. 性能考虑与替代方案
# 虽然这些函数很强大,但在某些情况下列表推导式可能更清晰
# 使用列表推导式实现相同功能
squared_alt = [x 2 for x in numbers]
even_alt = [x for x in numbers if x % 2 == 0]
print(f列表推导式平方: {squared_alt})
print(f列表推导式偶数: {even_alt})
# 7. 高级技巧:多序列操作
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]
# 多序列映射
sums = list(map(lambda x, y, z: x + y + z, list1, list2, list3))
print(f多序列求和: {sums})
# 8. 实用工具函数示例
def process_data(data):
数据处理管道示例
# 步骤1:过滤无效数据
valid_data = filter(lambda x: x is not None, data)
# 步骤2:转换为整数
int_data = map(int, valid_data)
# 步骤3:应用业务逻辑
processed = map(lambda x: x 2 + 10, int_data)
return list(processed)
sample_data = ['1', '2', None, '3', '4']
result = process_data(sample_data)
print(f数据处理结果: {result})
# 总结:lambda、map和filter为Python提供了强大的函数式编程能力
# 它们使代码更简洁、表达力更强,特别适合数据处理和转换场景
```
更多推荐


所有评论(0)