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

相关推荐
ACP广源盛139246256732 小时前
硬件选型笔记:国产 PCIe Gen2.1 交换芯片 IX6024@ACP,工控与存量设备国产化改造方案评估
笔记·硬件架构·硬件工程·pcie·国产芯片
IT_Octopus2 小时前
【零基础入门 LLM 开发 · Day 13】:LangChain 的对话记忆——Message 对象版
人工智能·python·langchain
2603_965148112 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
文人sec3 小时前
SQL基础入门笔记 | 从零基础到掌握核心查询语句
数据库·笔记·sql
CCblandy4 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
摇滚侠4 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y5 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
xier_ran5 小时前
【infra之路】AI 编译器学习笔记(六):重拾 C++——lambda 与 MLIR 中的回调
c++·笔记·学习
拿本唠嗑AI研究5 小时前
本体工程实战指南:从建模到可维护的完整落地路径
java·人工智能·python·jena·ontology
志尊宝5 小时前
Vue3 零基础每日笔记(078):首屏加载速度优化汇总——清单化方案
笔记