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

一、filter()

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

1、语法

filter(function, iterable)

  • function:判断函数(返回 TrueFalse),如果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

相关推荐
随遇而安zx1 小时前
【地基篇】---JVM 类加载 源码解析(基于 Java 8)
java·jvm·python
2601_962300472 小时前
Python TensorFlow对比PyTorch_Python TensorFlow和PyTorch在机器学习中的差异
pytorch·python·深度学习·机器学习·tensorflow
承渊政道3 小时前
【Python编程—从入门到实践】(Python条件判断完全入门:从布尔表达式到列表中的if实战)
开发语言·python·pycharm·条件判断·布尔表达式
circuitsosk4 小时前
企业知识库 RAG 从 62% 到 91%:分块策略、混合检索与重排序的调优全记录
python·知识库问答·rag·面试项目·ai工程化·混合检索
烂蜻蜓4 小时前
Flask入门教程(二十六):Session API——用户会话状态管理
后端·python·flask
2603_965148116 小时前
家居百货蓝海:API挖掘高复购率生活小商品
大数据·服务器·人工智能·python·生活
阿童木写作9 小时前
跨境电商图片翻译工具推荐:批量图片翻译+视频字幕翻译+智能抠图
python·macos·音视频·xcode
cui_ruicheng10 小时前
LangChain 应用开发(十四):Agent 上下文与记忆机制
服务器·人工智能·python·langchain
circuitsosk10 小时前
任务规划器的三种范式对比:ReAct、Plan-and-Execute 与 Tree-of-Thought 在真实业务中的取舍
前端·javascript·python·react.js·llm·ai agent