一日一技:如何对数据进行过滤

简介: 一日一技:如何对数据进行过滤

有一个列表[1, 2, False, '', 'test', 0],现在需要把里面所有非空、非False,非0的数据取出来。


可能有一些人会使用列表推导式:


a = [1, 2, False, '', 'test', 0] 
useful = [x for x in a if x]


但如果过滤规则稍微复杂一些呢?例如,如果列表里面的元素不是字符串,那么先把元素转换为字符串,然后转换为bytes型数据,计算md5值。如果md5值转换成10进制数以后是3的倍数,那么就把这个数筛选出来。


为了实现这个目的,我们可以定义一个函数:


import hashlib 
def check(value): 
    value_str = str(value) 
    value_hex = str(hashlib.md5(value_str.encode()).hexdigest()) 
    value_decimal = int(value_hex, 16) 
    return value_decimal % 3 == 0 
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
b = [x for x in a if check(x)]


运行效果如下图所示。


4.png


在Python里面,有一个现成的函数filter也能实现这个效果:


a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
b = filter(check, a)


此时,获得的b变量是一个生成器对象,只有在对它进行迭代的时候,才能获取里面的值。如下图所示。


5.png


filter函数接收两个参数,第一个参数是一个函数名,第二个参数是一个可迭代的对象。filter函数把可迭代对象的每一个值都放进参数1对应的函数中,如果返回True,那么这个值就是有效的,就会被保留。如果返回False,那么这个值就会被丢弃。


Filter的第一个参数也可以是None,此时filter(None, [1, 2, '', False, 'xx'])的效果就是把列表里面所有非空,非0,非False的数据返回出来。


请关注微信公众号【未闻Code】获取更多精彩文章。

目录
相关文章
|
Serverless
📢大模型服务平台百炼“流程”功能下线通知
本文主要内容介绍了大模型服务平台百炼的“流程”功能将于2025年11月15日下线。自通知发布起,“流程”入口将逐步隐藏,建议用户尽快迁移至全新升级的工作流应用,支持MCP、函数计算及大模型节点编排,操作更便捷。2025年6月15日起,现存“流程”不可修改;11月15日起完全停用,智能体中需解除“流程”引用并替换为工作流。请参考相关文档完成迁移。
400 0
|
存储 人工智能 架构师
ChatGPT 与软件架构 (4) - 架构师提示工程指南
ChatGPT 与软件架构 (4) - 架构师提示工程指南
385 0
|
数据采集 人工智能 运维
上阿里云百炼用Qwen3搞定MCP Agent,有机会瓜分1亿tokens
Qwen3 Agent有奖征文活动正式启动,使用Qwen3+MCP Server搭建Agent,即有机会瓜分1亿Tokens及30个限定周边大奖!活动时间为2025年5月6日至5月30日,提交形式包括技术文档、故事感悟、演示视频等。欢迎扫码报名,发挥创意,赢取丰厚奖励!
1051 0
|
JSON 自然语言处理 数据格式
【自定义插件系列】用自定义插件在阿里云百炼上生成一篇图文并茂的文章
本文介绍了如何在阿里云百炼平台上利用自定义插件生成图文并茂的文章。通过大模型生成小红书风格的文章,提取关键元素生成图像提示词,结合文生图插件生成图片,并最终整合文本与图像输出给用户。整个流程包括多个步骤:从创建对话型工作流开始,经过多次大模型处理、脚本转换和自定义插件操作,到最后完成图文混排的输出。
734 0
|
存储 Unix Linux
手写操作系统(4)——计算机是如何启动的?BIOS、GRUB、文件系统......
手写操作系统(4)——计算机是如何启动的?BIOS、GRUB、文件系统......
314 1
|
7月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
783 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
11月前
|
供应链 安全 物联网
新技术趋势与应用:区块链、物联网和虚拟现实的未来发展
本文将探讨新兴技术如区块链、物联网和虚拟现实的发展趋势和应用场景。区块链技术作为一种分布式数据库,具有去中心化、安全透明等特点,被广泛应用于金融、供应链等领域。物联网技术通过将物品与互联网连接,实现智能化管理和控制,应用于智能家居、智能交通等场景。虚拟现实技术则通过模拟虚拟环境,提供沉浸式体验,应用于游戏、教育等领域。这些技术的发展将深刻影响我们的生活和社会。
147 3
|
11月前
|
存储 数据可视化 数据挖掘
使用Matlab绘制简单的二维与三维图形
【10月更文挑战第3天】本文详细介绍了如何在 Matlab 中绘制简单的二维和三维图形,包括曲线图、柱状图、散点图、网格图、表面图、等高线图、多边形填充图、切片图及矢量场等。文章提供了丰富的代码示例,如使用 `plot`、`bar`、`scatter`、`plot3`、`mesh`、`surf`、`contour` 等函数绘制不同类型图形的方法,并介绍了 `rotate3d`、`comet3` 和 `movie` 等工具实现图形的交互和动画效果。通过这些示例,读者可以轻松掌握 Matlab 的绘图技巧,并应用于数据可视化和分析中。
|
存储 Java 数据挖掘
构建基于Spring Boot的数据分析平台
构建基于Spring Boot的数据分析平台
|
Java 测试技术 API
SpringBoot单元测试快速写法问题之复杂的业务逻辑设计有效的单元测试如何解决
SpringBoot单元测试快速写法问题之复杂的业务逻辑设计有效的单元测试如何解决