Python 中的 filter() 函数:筛选可迭代对象元素
在 Python 中,filter()
函数是一个非常有用的内置函数,用于根据指定条件过滤可迭代对象中的元素。本文将深入探讨 filter()
函数的用法、工作原理以及常见应用场景,以帮助大家更好地理解和运用这个函数。
什么是 filter() 函数?
filter()
函数用于筛选可迭代对象中的元素,只保留满足指定条件的元素。
该函数的语法如下:
filter(function, iterable)
-
function
是一个函数,用于对可迭代对象的每个元素进行判断,返回True
或False
。 -
iterable
是一个可迭代对象,例如列表、元组、集合等。
filter()
函数返回一个迭代器,其中包含满足条件的元素。
filter() 函数的基本用法
先来看一些 filter()
函数的基本用法。
1. 筛选偶数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers)) # [2, 4, 6, 8, 10]
在这个示例中,使用 filter()
函数和匿名函数来筛选列表 numbers
中的偶数,最终得到一个包含偶数的列表。
2. 筛选长度大于等于 5 的字符串
strings = ["apple", "banana", "orange", "kiwi", "pear", "grape"]long_strings = filter(lambda x: len(x) >= 5, strings)
print(list(long_strings)) # ['apple', 'banana', 'orange', 'grape']
在这个示例中,使用 filter()
函数和匿名函数来筛选列表 strings
中长度大于等于 5 的字符串,最终得到一个包含符合条件的字符串的列表。
filter() 函数的常见应用场景
filter()
函数在实际编程中有许多应用场景,以下是一些常见的用法:
1. 筛选符合条件的文件
import osfiles = os.listdir('.')
python_files = filter(lambda x: x.endswith('.py'), files)
print(list(python_files))
在这个示例中,使用 filter()
函数和匿名函数来筛选当前目录中的所有文件,只保留以 .py
结尾的 Python 文件。
2. 筛选唯一值
numbers = [1, 2, 2, 3, 3, 4, 5, 5]unique_numbers = filter(lambda x: numbers.count(x) == 1, numbers)
print(list(unique_numbers)) # [1, 4]
在这个示例中,使用 filter()
函数和匿名函数来筛选列表 numbers
中只出现一次的元素,最终得到一个包含唯一值的列表。
3. 删除空值
values = [0, None, '', False, 42, 'hello', True]non_empty_values = filter(None, values)
print(list(non_empty_values)) # [42, 'hello', True]
在这个示例中,使用 filter()
函数和 None
函数来删除列表 values
中的空值,最终得到一个不包含空值的列表。
4. 过滤负数
有时候,可能需要过滤出列表中的负数,可以利用 filter()
函数实现这一目标。
numbers = [1, -2, 3, -4, 5, -6]positive_numbers = filter(lambda x: x >= 0, numbers)
print(list(positive_numbers)) # [1, 3, 5]
在这个示例中,使用 filter()
函数和匿名函数来过滤列表 numbers
中的负数,最终得到一个包含正数的列表。
5. 过滤包含特定字母的单词
有时候,可能需要从一个单词列表中过滤出包含特定字母的单词。
words = ["apple", "banana", "orange", "kiwi", "pear", "grape"]words_with_letter_a = filter(lambda x: 'a' in x, words)
print(list(words_with_letter_a)) # ['apple', 'banana', 'grape']
在这个示例中,使用 filter()
函数和匿名函数来过滤列表 words
中包含字母 'a' 的单词,最终得到一个包含符合条件的单词的列表。
6. 过滤长度为奇数的字符串
有时候,可能需要从一个字符串列表中过滤出长度为奇数的字符串。
strings = ["apple", "banana", "orange", "kiwi", "pear", "grape"]odd_length_strings = filter(lambda x: len(x) % 2 != 0, strings)
print(list(odd_length_strings)) # ['apple', 'kiwi', 'pear']
在这个示例中,使用 filter()
函数和匿名函数来过滤列表 strings
中长度为奇数的字符串,最终得到一个包含符合条件的字符串的列表。
总结
filter()
函数是 Python 中一个非常强大和灵活的函数,用于根据指定条件过滤可迭代对象中的元素。通过合理地应用 filter()
函数,可以轻松地实现各种元素筛选需求,使得代码更加简洁高效。希望本文提供的示例和解释能够帮助大家更好地理解和应用 filter()
函数,在实际开发中发挥更大的作用。
如果你觉得文章还不错,请大家 点赞、分享、留言 ,因为这将是我持续输出更多优质文章的最强动力!
相关文章:
Python 中的 filter() 函数:筛选可迭代对象元素
在 Python 中,filter() 函数是一个非常有用的内置函数,用于根据指定条件过滤可迭代对象中的元素。本文将深入探讨 filter() 函数的用法、工作原理以及常见应用场景,以帮助大家更好地理解和运用这个函数。 什么是 filter() 函数? …...

Java高频面试之并发篇
有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 并行和并发有什么区别? 并行是同时执行多个任务,而并发是多个任务在一段时间内交替执行。并行(Parallel)是指同时执行多个任务或操作,通过同时…...

docker 运行异构镜像
概述 关于docker镜像在不同的cpu架构下运行报错的解决办法,作者踩坑验证,在此分享经验 某次工作遇到需要银行内部部署docker镜像,由于行内已经开始走信创的路线,使用鲲鹏系统,arm架构,记过就遇到了standa…...
练习3-8 查询水果价格
探索--题目集索引 给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元…...
PTA 对于下列程序,正确的是() 。void f(int *p){ *p = 5;}int main(void){ int a, *p; a = 10;
对于下列程序,正确的是() 。 void f(int *p) {*p 5; } int main(void) {int a, *p;a 10;p &a;f(p);printf(“%d”, (*p));return 0; }A.5 B.6 C.10 D.11 答:A 解析:这里考察当是指针作为函数的参数。这里将 p …...
【银河商学】大蓝短视频学习02——流量突围实战
【银河商学】大蓝短视频学习02——流量突围实战 内容大纲 找对标找准你的"竞争对手" 定形式选定适合你的视频形式 做内容选题决定命运 2s上热门 一、找对标 1. 为什么要找对标 标准答案,少走弯路99%的问题,都有标准答案。 找个懂得人问一问 秒上热门,快速起号预…...
Android 获取Sms
Android 获取Sms 本篇文章记录下android下获取短信列表. 1: 申请权限 <uses-permission android:name"android.permission.READ_SMS" />2: 获取短信内容列表 private void readSms() {String[] projection {"_id", "address", "b…...

【Linux】cpp-httplib库
目录 升级gcc版本 下载cpp-httplib的zip安装包,上传到服务器 编辑 简单使用 首先打开gittee,搜索cpp-httplib,选择其中一个即可 也可以点下方链接 cpp-httplib库:cpp-httplib: cpp-httplib (gitee.com) 注意:cpp-httplib在使用的时候需…...

全网最最最详细centos7如何安装docker教程
在CentOS 7上安装Docker主要包括以下步骤: 1. 卸载旧版本的Docker 首先,需要确保系统上没有安装旧版本的Docker。可以通过以下命令来卸载它们: sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-late…...

【C++专栏】C++入门 | 函数重载、引用、内联函数
博客主页:Duck Bro 博客主页系列专栏:C专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ C入门 | 函数重载、引用、内联函数 文章编号:C入门 / 02 文…...

html--彩虹爱心
文章目录 js内容cssreset.min.cssstyle.css html内容 js内容 const colors ["#e03776","#8f3e98","#4687bf","#3bab6f","#f9c25e","#f47274"]; const SVG_NS http://www.w3.org/2000/svg; const SVG_XLINK &q…...

基于Kronig-Penney能带模型的MATLAB求解与仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于Kronig-Penney能带模型的MATLAB求解与仿真.综合利用 MATLAB提供的求解常微分方程、矩阵行列式、代数表达式化简及绘图等函数 ,可使 Kronig-Penney能带模型分析…...
【Web - 框架 - Vue】随笔 - Vue CLI - 快速上手
Vue CLI 创建Vue CLI项目 【步骤】 命名项目空间:在电脑里创建文件夹,用于存储所有项目;定位项目空间:在"CMD窗口"里定位到工程的项目空间上; 方法1:(a)用"WINR"打开运行窗口&#x…...
JavaWeb开发——html、 jsp(html 、js 、java源码)
1.前后端整体合一 在页面上,包含界面和业务数据处理 2.前后端分离 项目整体上分成前端部分和后端部分,相互独立 Jquery的核心 选择器----找到需要操作的Dom读取或者设置DOM的值或者属性事件的处理 一、jQuery选择器 $("标签类型")$("…...

javascript事件大全
在JavaScript中,事件是用户和浏览器之间交互的桥梁。当某些特定的事情发生时(如用户点击按钮、鼠标移动、页面加载等),浏览器会触发相应的事件。这些事件可以被JavaScript代码捕获,并允许开发者执行某些操作。以下是一…...
太平医康养经理人是医疗资源的链接者
太平人寿通过构建资源整合平台,已成功将国际化医疗服务资源进行深度整合。目前,该公司已完成对英国著名医疗集团Circle Health在中国设立的首家医疗机构——圆和医疗的增资行动,并与新加坡知名的莱佛士私立综合医疗集团签订了业务合作协议。同…...

kafka(三)springboot集成kafka(1)介绍
基于kafka新版本 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.0.0</version></dependency> </dependencies> 一、kafkaProducer 1、介绍…...
Markdown语法与基础使用
在撰写博客、文档或者其他类型的文字内容时,Markdown语法是一种简洁、易读易写的标记语言,被广泛应用于互联网上的文本编辑和排版中。下面将介绍Markdown语法的基础使用方法,帮助你更好地利用Markdown来编写内容。 1. 标题 Markdown支持使用…...
【排序】七大排序表格比较
排序 时间复杂度 空间复杂度 最坏时间复杂度 最好时间复杂度 稳定性 插入排序 O(n) O(1) O(n) O(n) 稳定 希尔排序 O(nlogn)-O(n)取决于增量序列 O(1) O(n^1.3) O(nlogn) 不稳定 选择排序 O(n) O(1) O(n) O(n) 不稳定 冒泡排序 O(n) O(1) O(n) O(n…...

arcgis 栅格数据处理2——栅格转地级市(栅格转矢量图)
1. 获取空间分析权限(解决无法执行所选工具问题) 选中“自定义”中的“扩展模块” 在弹出的模块中选中能选的模块,此处需要选择“spatial analysis”以进行下一步分析 3. 将栅格数据转为整数型(解决无法矢量化) 选…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...