python如何在列表、字典中筛选数据
python如何在列表、字典中筛选数据?
实际问题有哪些?
1.过滤掉列表[3,9,-1,10.-2......]中负数
2.筛选出字典
{‘li_ming':90,'xiao_hong':60,'li_kang':95,'bei_men':98}中值高于90的项
3.筛选出集合{3,9,-1,10.-2......]中能被3整除的数
问题1如何解决?
最普通方法:
#!/usr/bin/python3 deffilter_l(data): res=[] foriindata: ifi>0: res.append(i) returnres if__name__=='__main__': data=[3,9,-1,10,-2] new_l=filter_l(data) print(new_l)
如何解决列表问题?
初始化列表:生成-10到10的随机数列表,去除负数
1.filter方法:
#!/usr/bin/python3 fromrandomimportrandint deffilter_l(data): #循环data列表,把值一个一个取出交个lambda中x,如何lambda函数为True,返回x生成一个新的filter对象 returnfilter(lambdax:x>=0,data) if__name__=='__main__': #列表生成10个-10到10的随机数 data=[randint(-10,10)for_inrange(10)] print(data) #new_l为可迭代对象 new_l=filter_l(data) print(list(new_l),type(new_l))
2.列表解析:
#!/usr/bin/python3 fromrandomimportrandint deffilter_l(data): #循环data列表,把值一个一个取出是否满足if条件,满足True返回x生成一个新列表 return[xforxindataifx>=0] if__name__=='__main__': #列表生成10个-10到10的随机数 data=[randint(-10,10)for_inrange(10)] print(data) #new_l为可迭代对象 new_l=filter_l(data) print(list(new_l),type(new_l))
运行速度比较:解析>filter>普通
如何解决字典?
字典解析,筛选数据:
#!/usr/bin/python3 fromrandomimportrandint deffilter_l(data): print(data.items()) #把字典转换成dict_items,循环里面的key和value,满足if条件返回对应的key和value值 return{k:vfork,vindata.items()ifv>90} if__name__=='__main__': #字典生成式 data={x:randint(0,100)forxinrange(10)} print(data) new_l=filter_l(data) print(new_l,type(new_l))
如何解决集合问题?
#!/usr/bin/python3 fromrandomimportrandint deffilter_l(data): #迭代集合中值,满足条件为True返回x return{xforxindataifx%3==0} if__name__=='__main__': #集合生成式 data={randint(0,100)forxinrange(10)} print(data) new_l=filter_l(data) print(new_l,type(new_l))
如何逻辑整理?
无论是解析器还是普通方法,都需要for循环,if判断,逻辑都是满足条件返回值,过滤出满足条件的值,无论是生成器还是解析器都满足这个格式:“返回值for循环if判断“,通过lambda满足格式:“lambda输入值:条件,格式化数据
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。