news 2026/4/23 9:12:45

python可迭代对象,应用 在断言

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python可迭代对象,应用 在断言


前言

python中,涉及到批量数据的断言时。
1)经常使用的内置函数。


提示:以下是本篇文章正文内容,下面案例可供参考

一、any()、all()

1. any()、all()

any()、all() 是 python的内置函数,用于判断可迭代对象中元素的布尔值。

1.1、适合在代码验证中,涉及到批量数据的断言时,any()、all()是很常用的用法。

1)语法结构
入参: 可迭代对象
出参: 布尔值。
运行逻辑:短路求值–>如all( 可迭代对象)。 从头开始,只要遇到 第一个假值,程序立马结束运行、得到结果。同any()

any(iterable)只要至少一个元素为真,返回 True;否则返回 False
all(iterable)所有元素都为真时返回 True;否则返回 False

2. python中的假值

即布尔值 为False的值, 可以使用bool()判断得到。
常见:

经常用于 if判断的简化,如

# 检查列表是否为空(传统写法)iflen(my_list)==0:pass# 更 Pythonic 的写法ifnotmy_list:# 空列表是假值pass

3.常见用法

3.1 与可迭代对象
由于短性求值特点:
1) 常常 与 ‘生成器表达式’ 搭配。

# 推荐写法(生成器表达式,惰性)any(expensive_check(x)forxindata)

2)

numbers=[1,3,5,7]1)运算类:# 判断是否全部为奇数print(all(n%2==1forninnumbers))# True# 判断是否存在偶数print(any(n%2==0forninnumbers))# False2)多条件defvalidate_data(data):# 断言列表中不能有 None 或空字符串assertnotany(visNoneorv==""forvindata),"数据包含无效值"3) 假值筛选notuser_input=["name","age",""]# 是否有空字段ifany(notfieldforfieldinuser_input):print("请填写所有字段")

二、map()、filter()

1.map()

map(function,iterable,...)# 可传入多个可迭代对象
  1. 入参
    function:函数引用
    iterable1,iterable2 : 多个可迭代对象。
    2)返回:
    将 可迭代对象的每个元素, 作为func的入参(对应iterable的个数); 返回func所有结果的迭代器。

3)特点:
返回值的元素个数。由最短的 iterable决定

nums=[1,2,3,4]squared=map(lambdax:x**2,nums)print(list(squared))# [1, 4, 9, 16]
list1=[1,2,3]list2=[4,5,6]result=list(map(lambdax,y:x+y,list1,list2))# [5, 7, 9]

4) 常用
类型转换,数值运算, 提取属性等。

应用: 案例1:数据清洗管道 ```python raw_data=[" 123 ","45.6","78 "]pipeline=map(str.strip,raw_data)# 去空格pipeline=map(float,pipeline)# 转浮点数pipeline=map(lambdax:round(x,1),pipeline)# 保留1位小数result=list(pipeline)# [123.0, 45.6, 78.0]
组合filter()使用: ```python nums=[1,2,3,4,5]even_squares=map(lambdax:x**2,filter(lambdax:x%2==0,nums))# [4, 16]

2.filter()

筛选满足条件的元素。
所以 function函数里面,是布尔判断式。 如果function 返回值是None,
则过滤掉所有假值元素。

filter(function,iterable)
  1. 入参
    function: 返回布尔值(或真/假值)。
    iterable: 可迭代对象。
    2)返回:
    一个迭代器,包含满足条件的元素。
# 筛选偶数nums=[1,2,3,4,5,6]evens=filter(lambdax:x%2==0,nums)print(list(evens))# [2, 4, 6]
# 去掉假值(function=None)mixed=[0,1,'','hello',None,[],[1,2]]cleaned=filter(None,mixed)print(list(cleaned))# [1, 'hello', [1,2]]
mapfilter
返回值对每个元素应用函数后的新值的迭代器原元素中满足条件的迭代器
函数作用转换元素(一对一)判断元素是否保留(是/否)
函数返回值任意类型布尔值(或真/假值))

三、生成器表达式

一个列表中多个字典, 我想查找 其中的键XName 是 AUTO0000176 的字典,并获取这个字典。

1、常规写法:forsampdicinlistdict:ifsampdic['XNmae']=='AUTO0000176':获取 sampdicbreak2、更Pythonic 的写法next((sampdicforsampdicinlistdictifsampdic['XNmae']=='AUTO0000176',None)

使用生成器表达式,惰性计算。
1)next() 函数:从迭代器中获取下一个值
2)默认值参数:None(当迭代器耗尽时返回)

总结

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 9:04:32

CosyVoice3情感控制全解析:如何调整语音的情感强度和复合情感

CosyVoice3情感控制全解析:如何调整语音的情感强度和复合情感 1. 为什么需要情感语音合成? 在游戏开发、有声读物制作和虚拟助手交互中,单纯的文字转语音往往无法满足需求。一个优秀的NPC对话系统需要能够根据剧情发展调整语音情感&#xf…

作者头像 李华
网站建设 2026/4/23 8:58:34

无损视频剪辑神器:LosslessCut 完全使用指南

无损视频剪辑神器:LosslessCut 完全使用指南 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 想要快速剪辑视频却担心画质损失?LosslessCut 是你…

作者头像 李华
网站建设 2026/4/23 8:57:13

微信聊天记录解密终极指南:WechatDecrypt工具完整教程

微信聊天记录解密终极指南:WechatDecrypt工具完整教程 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 你是否曾经因为更换手机而丢失了重要的微信聊天记录?或者需要恢复那些看似无…

作者头像 李华
网站建设 2026/4/23 8:57:06

30分钟搞定!MiGPT智能音箱改造终极指南

30分钟搞定!MiGPT智能音箱改造终极指南 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 还在为小爱音箱的"人工智障"回答而…

作者头像 李华