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

相关推荐
一隅论数智2 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
默_笙2 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
qq_426003962 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技2 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读2 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
只睡四小时2 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
深圳老胡2 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
奇思妙想聪明勤奋的小羊2 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
Because_of_Her12 天前
并查集-听课笔记
笔记·算法·并查集