Python之filter()和map()的区别(仅供学习参考)

一、filter()

filter() 是Python的内置函数,用于过滤可迭代对象,保留满足条件的元素。

1、语法

filter(function, iterable)

  • function:判断函数(返回 True 或 False),如果为 None 则过滤掉所有假值

  • iterable:要过滤的可迭代对象(列表、元组、字符串等)

2、返回值

  • 返回一个迭代器(filter对象) ,包含所有使函数返回 True 的元素

3、案例1

过滤出偶数

def is_even(n):

return n % 2 == 0

numbers = 1, 2, 3, 4, 5, 6, 7, 8

result = filter(is_even, numbers)

print(list(result)) # 2, 4, 6, 8

4、案例2

过滤出大于5的数

numbers = 1, 3, 5, 7, 9, 11

result = filter(lambda x: x > 5, numbers)

print(list(result)) # 7, 9, 11

过滤出正数

numbers = -3, -2, 0, 1, 2, 3

result = filter(lambda x: x > 0, numbers)

print(list(result)) # 1, 2, 3

5、案例3(None)

过滤掉所有假值(False, None, 0, "", \[\], {} 等)

mixed = 0, 1, False, 2, '', 3, None, 4, \[, 5]

result = filter(None, mixed)

print(list(result)) # 1, 2, 3, 4, 5

二、filter() 和 map() 的区别

两者都是Python的内置高阶函数,但目的完全不同:

特性 filter() map()
目的 筛选/过滤元素 转换/映射元素
元素数量 可能减少 (过滤掉部分) 不变 (一一对应)
返回内容 原元素中符合条件的 应用函数后的新值

案例( 处理学生成绩**):**

scores = 85, 92, 78, 65, 88, 55, 90

map: 所有成绩加5分(元素数量不变)

adjusted = map(lambda x: x + 5, scores)

print(list(adjusted)) # 90, 97, 83, 70, 93, 60, 95

filter: 只保留及格成绩(元素减少)

passed = filter(lambda x: x >= 60, scores)

print(list(passed)) # 85, 92, 78, 65, 88, 90

相关推荐
实名上网宋凯宣9 小时前
Django
后端·python·django
如若12310 小时前
【论文复现】CoFailMed:从零复现医学图像分割的共享失败审计,含完整代码流程与科研绘图
人工智能·python
砚底藏山河11 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
视觉小萌新11 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list
薛定谔的猫-菜鸟程序员12 小时前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
Ramble_Naylor14 小时前
Rust深度解读:Send 与 Sync 的本质与线程安全边界
python·算法·rust
Allen_LVyingbo14 小时前
NVIDIA CUDA Tile 在医疗计算中的算子形式化、算法重构与内核实现
大数据·python·算法·重构·知识图谱·健康医疗·数据库架构
程序边界14 小时前
一台数据集成软件的拆解笔记(下):一致性、容错、跑批与迁移,KFS 真正难的地方在这
java·前端·笔记
云和数据.ChenGuang15 小时前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes
我命由我1234516 小时前
Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)
java·开发语言·前端·javascript·数据库·python·java-ee