Python函数式编程lambda、map和filter的实战应用

```python

# Python函数式编程实战:lambda、map和filter的应用

# 1. lambda匿名函数的基本应用

# 计算平方

square = lambda x: x 2

print(f5的平方: {square(5)})

# 判断奇偶

is_even = lambda x: x % 2 == 0

print(f4是否为偶数: {is_even(4)})

# 字符串处理

reverse_str = lambda s: s[::-1]

print(f'hello'反转后: {reverse_str('hello')})

# 2. map函数的实际应用

numbers = [1, 2, 3, 4, 5]

# 将列表中的每个元素平方

squared_numbers = list(map(lambda x: x 2, numbers))

print(f平方后的列表: {squared_numbers})

# 字符串列表处理

words = ['apple', 'banana', 'cherry']

capitalized_words = list(map(lambda word: word.upper(), words))

print(f大写后的单词: {capitalized_words})

# 多个列表同时处理

list1 = [1, 2, 3]

list2 = [4, 5, 6]

sum_list = list(map(lambda x, y: x + y, list1, list2))

print(f列表相加结果: {sum_list})

# 3. filter函数的实际应用

numbers = range(1, 11)

# 筛选偶数

even_numbers = list(filter(lambda x: x % 2 == 0, numbers))

print(f1-10中的偶数: {even_numbers})

# 筛选能被3整除的数

divisible_by_3 = list(filter(lambda x: x % 3 == 0, numbers))

print(f1-10中能被3整除的数: {divisible_by_3})

# 字符串列表筛选

words = ['python', 'java', 'c', 'javascript', 'go']

long_words = list(filter(lambda word: len(word) > 4, words))

print(f长度大于4的单词: {long_words})

# 4. 组合使用lambda、map和filter

data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 筛选偶数并计算平方

even_squares = list(map(lambda x: x 2, filter(lambda x: x % 2 == 0, data)))

print(f偶数的平方: {even_squares})

# 筛选大于5的数并加倍

doubled_large = list(map(lambda x: x 2, filter(lambda x: x > 5, data)))

print(f大于5的数加倍: {doubled_large})

# 5. 实际应用场景

# 数据处理:筛选并转换学生成绩

students = [

{'name': 'Alice', 'score': 85},

{'name': 'Bob', 'score': 92},

{'name': 'Charlie', 'score': 78},

{'name': 'David', 'score': 65}

]

# 筛选及格的学生

passing_students = list(filter(lambda student: student['score'] >= 60, students))

print(f及格的学生: {passing_students})

# 提取学生姓名和成绩等级

def get_grade(score):

if score >= 90: return 'A'

elif score >= 80: return 'B'

elif score >= 70: return 'C'

elif score >= 60: return 'D'

else: return 'F'

student_grades = list(map(lambda student: {

'name': student['name'],

'grade': get_grade(student['score'])

}, students))

print(f学生成绩等级: {student_grades})

# 6. 文件处理应用

# 假设有一个文本文件,我们想读取并处理其中的数字

sample_data = 1,2,3,4,5,6,7,8,9,10

# 解析字符串为整数列表并筛选奇数

numbers_from_string = list(map(int, sample_data.split(',')))

odd_numbers = list(filter(lambda x: x % 2 != 0, numbers_from_string))

print(f从字符串中解析出的奇数: {odd_numbers})

# 7. 性能优化示例

import time

# 传统方法 vs 函数式方法

large_list = list(range(1000000))

# 传统循环方法

start_time = time.time()

result1 = []

for num in large_list:

if num % 2 == 0:

result1.append(num 2)

traditional_time = time.time() - start_time

# 函数式方法

start_time = time.time()

result2 = list(map(lambda x: x 2, filter(lambda x: x % 2 == 0, large_list)))

functional_time = time.time() - start_time

print(f传统方法耗时: {traditional_time:.4f}秒)

print(f函数式方法耗时: {functional_time:.4f}秒)

# 8. 复杂数据处理

# 处理嵌套数据结构

employees = [

{'name': 'John', 'skills': ['Python', 'Java'], 'experience': 3},

{'name': 'Jane', 'skills': ['JavaScript', 'React'], 'experience': 5},

{'name': 'Mike', 'skills': ['Python', 'Django'], 'experience': 2}

]

# 筛选有Python技能且经验超过2年的员工

python_experts = list(filter(

lambda emp: 'Python' in emp['skills'] and emp['experience'] > 2,

employees

))

print(fPython专家: {python_experts})

# 提取员工技能列表

all_skills = list(map(lambda emp: emp['skills'], employees))

print(f所有技能: {all_skills})

# 9. 实用工具函数

# 数据清洗:去除空值和无效数据

raw_data = ['', 'hello', ' ', 'world', None, 'python', '']

clean_data = list(filter(

lambda x: x and x.strip(), # 去除空字符串和只包含空格的字符串

raw_data

))

print(f清洗后的数据: {clean_data})

# 10. 数学运算应用

# 计算斐波那契数列

fibonacci = list(map(

lambda x: (lambda f, n: f(f, n))(

lambda fib, n: n if n <= 1 else fib(fib, n-1) + fib(fib, n-2), x

),

range(10)

))

print(f前10个斐波那契数: {fibonacci})

# 总结输出

print( === 函数式编程优势总结 ===)

print(1. 代码更简洁易读)

print(2. 避免副作用,提高代码可靠性)

print(3. 便于并行处理)

print(4. 支持惰性求值,提高性能)

```

基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构与权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性稳定性。此外,文档还列举了大量相关的科研方向技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习掌握RBF神经网络与滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度与鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析与仿真验证相结合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值