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

第三周 Day 1

🎯 今日目标

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

🧠 函数式编程基础

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

🛠 常用高阶函数

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

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

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

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

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

python 复制代码
from functools import reduce

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

🔁 生成器 Generator

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

python 复制代码
def countdown(n):
    while n > 0:
        yield n
        n -= 1

for i in countdown(5):
    print(i)

🔄 迭代器 Iterator

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

python 复制代码
lst = iter([1, 2, 3])
print(next(lst))  # 输出 1
print(next(lst))  # 输出 2

🧪 今日练习任务

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

python 复制代码
nums = [2, 4, 6, 8]
result = list(map(lambda x: x**2, nums))
print(result)

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

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

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

python 复制代码
def even_gen(n):
    for i in range(n):
        yield i * 2

print(list(even_gen(5)))  # 输出 [0, 2, 4, 6, 8]

📌 今日总结

内容 说明
函数式编程入门 高阶函数 map/filter/reduce
惰性计算 生成器节省内存,适合大数据处理
迭代器基础 掌握 iter() 和 next()
实战练习 提升数据处理与简洁表达能力
相关推荐
MartinYeung527 分钟前
[论文学习]PACT:溯源感知能力合约——面向智能体安全的参数级溯源
人工智能·学习·安全
阿米亚波27 分钟前
【C++ STL】std::unordered_multiset
开发语言·数据结构·c++·笔记·stl
丙氨酸長鏈33 分钟前
[Bukkit插件开发]手持发射器箭矢机枪 教学文档 面向Python/C#开发者入门Java与Bukkit API
java·python·c#
我是唐青枫37 分钟前
Java ReentrantLock 实战详解:比 synchronized 更灵活的可重入锁
java·开发语言
QH139292318801 小时前
# R&S ZNB43 ZNA43 ZNA67矢量网络分析仪
开发语言·网络·php
旋生万物1 小时前
电磁力 = 螺旋联络的 90° 旋转?麦克斯韦方程组的几何重构
人工智能·python·算法·机器学习·copilot·世界模型·物理ai
久久学姐1 小时前
【AI问答】python引入其他模块的对象
python·绝对导入·相对导入·目录结构·模块导入
脚踏实地皮皮晨2 小时前
003003001_Grid控件
开发语言·windows·算法·c#·visual studio
十年磨剑走天涯2 小时前
C++ STL 容器操作复杂度速查表
开发语言·c++
always_TT2 小时前
【Python requirements.txt 依赖管理】
开发语言·python