当前位置: 首页 > news >正文

Python入门Day17:函数式编程(map/filter/reduce/lambda)

学习目标:

  • 掌握匿名函数lambda的写法与用法
  • 熟练使用内置函数map(),filter(),reduce()
  • 理解函数式编程思想:函数作为“一等公民”
  • 能使用这些工具处理列表,字符串,字典等结构

一、lambda表达式(匿名函数)

定义:lambda是一种简洁的函数定义方式,适用于存放临时,轻量函数

lambda 参数:表达式

示例1:求平方

square = lambda x:x ** 2
print(square(5)) # 输出:25

等价于

def square(x):return x ** 2

示例2:多参数求和

add = lambda a,b:a+b
print(add(3,4))    #输出:7

使用场景:

  • 作为map,filter,sorted等函数的参数
  • 不需要正式定义一个函数名的场合

二、map()函数——映射转换

对序列中的每个元素应用一个函数,返回一个新序列(生成器)

nums = [1,2,3,4]
squares = map(lambda x:x**@,nums)
print(list(squares))    #[1,4,9,16]
  • map(func,iterable)会对iterable中的每个元素都调用func

示例:批量字符串转大写

names = ["alice","bob","charlie"]
result = map(lambda s:s.upper(),names)
print(list(result))    # ['Alice','BOB','CHARLIE']

三、filter()函数——过滤筛选

对序列中的元素按条件筛选,保留返回True的元素

nums = [1,2,3,4,5]
even = filter(lambda x:x % 2==0,nums)
print(list(even))

示例:筛选非空字符串

items = ["","apple","","banana"]
non_empty = filter(lambda x:x != "",items)
print(list(non_empty))    #['apple','banana']

四、reduce()函数——累计计算

对序列进行“前两个->中间值->下一个“的连续操作

需要先导入模块:

from functools import reduce

示例:求列表累积乘积

from functools import reducenums = [1,2,3,4]
result = reduce(lambda x,y:x*y,nums)
print(result) # 输出:24

运算过程:

1 * 2 = 2
2 * 3 = 6
6 * 4 = 24

map/filter/reduce对比总结

函数功能返回类型是否惰性
map对每项做转换生成器
filter按条件筛选生成器
reduce两两累计计算最终值(单个)

http://www.dtcms.com/a/320041.html

相关文章:

  • 浏览器渲染与GPU进程通信图解
  • Numpy科学计算与数据分析:Numpy数组操作入门:合并、分割与重塑
  • PWM常用库函数(STC8系列)
  • 【Linux基础知识系列】第八十七篇 - 使用df命令查看磁盘空间
  • 橙河网络:Cint站点如何注册?好做吗?
  • 街道垃圾识别准确率↑32%:陌讯多模态融合算法实战解析
  • 解锁制药新质生产力:合规与效率双赢的数字化转型之道
  • 基于肌电信号的神经网络动作识别系统
  • docker mysql 5.6
  • CSS--:root指定变量,其他元素引用
  • 【题解】洛谷P3172 [CQOI2015] 选数[杜教筛]
  • 【mtcnn】--论文详解重点001之窗口滑动~
  • 板块三章节4——iSCSI 服务器(待更新)
  • python数据结构与算法(基础)
  • 栅栏密码的加密解密原理
  • RISCV instr 第31-40章
  • 钢卷矫平机背后的材料科学
  • 10-netty基础-手写rpc-定义协议头-02
  • 进程、网络通信方法
  • 机器学习通关秘籍|Day 04:梯度下降的概念原理、手动实现梯度下降
  • 商城小程序怎么做?如何开发母婴用品商城小程序?
  • Redis 编译错误:缺少静态库文件,如何解决?
  • 股指期货合约是个啥?怎么玩?
  • GitCode 7月:小程序积分商城更名成长中心、「探索智能仓颉!Cangjie Magic 体验有奖征文活动」圆满收官、深度对话栏目持续热播
  • 2025年我国半导体材料产业链全景分析
  • 遥感卫星领域的AI应用
  • 经营帮:重构企业经营全流程,打造产业互联网新生态
  • 靶场(二十九)---小白心得靶场体会---BitForge
  • MySQL 极简安装挑战:跨平台高效部署指南
  • C语言 16_day