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

6个月Python学习计划 Day 15 - 函数式编程、高阶函数、生成器/迭代器

第三周 Day 1

🎯 今日目标

  • 掌握 Python 中函数式编程的核心概念
  • 熟悉 map()、filter()、reduce() 等高阶函数
  • 结合 lambda 和 列表/字典 进行数据处理练习
  • 了解生成器与迭代器基础,初步掌握惰性计算概念

🧠 函数式编程基础

函数式编程是一种“将函数作为数据处理工具”的风格,强调表达式、不可变性和链式操作。

🛠 常用高阶函数

1️⃣ map(func, iterable):将函数应用于序列的每个元素

nums = [1, 2, 3, 4]
squares = list(map(lambda x: x**2, nums))
print(squares)  # 输出 [1, 4, 9, 16]

2️⃣ filter(func, iterable):过滤序列中符合条件的元素

nums = [5, 8, 12, 3, 7]
even = list(filter(lambda x: x % 2 == 0, nums))
print(even)  # 输出 [8, 12]

reduce(func, iterable):连续两两执行函数(需导入)

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

🔁 生成器 Generator

生成器是一种惰性迭代器,只在需要时计算结果,节省内存。

def countdown(n):while n > 0:yield nn -= 1for i in countdown(5):print(i)

🔄 迭代器 Iterator

任何实现了 iter() 和 next() 方法的对象都可以被称为迭代器。

lst = iter([1, 2, 3])
print(next(lst))  # 输出 1
print(next(lst))  # 输出 2

🧪 今日练习任务

✅ 练习1:用 map 和 lambda 对列表每个数平方

nums = [2, 4, 6, 8]
result = list(map(lambda x: x**2, nums))
print(result)

✅ 练习2:用 filter 筛选出长度大于3的字符串

words = ['hi', 'hello', 'python', 'no']
filtered = list(filter(lambda w: len(w) > 3, words))
print(filtered)

✅ 练习3:实现一个生成器,生成前 N 个偶数

def even_gen(n):for i in range(n):yield i * 2print(list(even_gen(5)))  # 输出 [0, 2, 4, 6, 8]

📌 今日总结

内容说明
函数式编程入门高阶函数 map/filter/reduce
惰性计算生成器节省内存,适合大数据处理
迭代器基础掌握 iter() 和 next()
实战练习提升数据处理与简洁表达能力
http://www.lryc.cn/news/2402358.html

相关文章:

  • <el-table>构建树形结构
  • linux——磁盘和文件系统管理
  • 云原生 DevOps 实践路线:构建敏捷、高效、可观测的交付体系
  • gateway 网关 路由新增 (已亲测)
  • ArcGIS Pro 3.4 二次开发 - 共享
  • Python html 库用法详解
  • C#异常处理进阶:精准获取错误行号的通用方案
  • 如何快速找出某表的重复记录 - 数据库专家面试指南
  • Python 训练营打卡 Day 33-神经网络
  • resolvers: [ElementPlusResolver()] 有什么用?
  • XHR / Fetch / Axios 请求的取消请求与请求重试
  • 机器学习-ROC曲线​​ 和 ​​AUC指标
  • Spring Boot缓存组件Ehcache、Caffeine、Redis、Hazelcast
  • 【学习记录】深入解析 AI 交互中的五大核心概念:Prompt、Agent、MCP、Function Calling 与 Tools
  • 如何有效删除 iPhone 上的所有内容?
  • AI大模型学习三十二、飞桨AI studio 部署 免费Qwen3-235B与Qwen3-32B,并导入dify应用
  • 操作系统中的设备管理,Linux下的I/O
  • 炉石传说 第八次CCF-CSP计算机软件能力认证
  • AI应用工程师面试
  • LabVIEW与Modbus/TCP温湿度监控系统
  • Cursor 1.0 版本 GitHub MCP 全面指南:从安装到工作流增强
  • 自主设计一个DDS信号发生器
  • 鸿蒙UI(ArkUI-方舟UI框架)- 使用弹框
  • 学习笔记(24): 机器学习之数据预处理Pandas和转换成张量格式[2]
  • 在不同型号的手机或平板上后台运行Aidlux
  • 【SSM】SpringBoot学习笔记1:SpringBoot快速入门
  • 1.企业可观测性监控三大支柱及开源方案的横评对比
  • Neo4j图数据库管理:原理、技术与最佳实践
  • Elasticsearch中的地理空间(Geo)数据类型介绍
  • [论文阅读] 软件工程 | 如何挖掘可解释性需求?三种方法的深度对比研究