python如何在列表、字典中筛选数据

yipeiwu_com7年前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
 
 
def filter_l(data):
 res = []
 for i in data:
  if i > 0:
   res.append(i)
 return res
 
if __name__ == '__main__':
 data = [3, 9, -1, 10, -2]
 new_l = filter_l(data)
 print(new_l)

如何解决列表问题?

初始化列表: 生成 -10 到 10 的随机数列表,去除负数

1. filter方法:

#!/usr/bin/python3
 
from random import randint
 
 
def filter_l(data):
 # 循环data列表,把值一个一个取出 交个lambda中x,如何lambda函数为True,返回x生成一个新的filter对象
 return filter(lambda x: x >= 0, data)
 
if __name__ == '__main__':
 # 列表生成10个 -10 到 10 的随机数
 data = [randint(-10, 10) for _ in range(10)]
 print(data)
 # new_l 为可迭代对象
 new_l = filter_l(data)
 print(list(new_l), type(new_l))

2. 列表解析:

#!/usr/bin/python3
 
from random import randint
 
 
def filter_l(data):
 # 循环data列表,把值一个一个取出 是否满足if条件,满足True返回x生成一个新列表
 return [x for x in data if x >=0 ]
 
if __name__ == '__main__':
 # 列表生成10个 -10 到 10 的随机数
 data = [randint(-10, 10) for _ in range(10)]
 print(data)
 # new_l 为可迭代对象
 new_l = filter_l(data)
 print(list(new_l), type(new_l))

运行速度比较:解析 > filter > 普通

如何解决字典?

字典解析,筛选数据:

#!/usr/bin/python3
 
from random import randint
 
 
def filter_l(data):
 print(data.items())
 # 把字典转换成dict_items,循环里面的key和value,满足if条件返回对应的key和value值
 return {k: v for k, v in data.items() if v > 90}
 
if __name__ == '__main__':
 # 字典生成式
 data = {x: randint(0, 100) for x in range(10)}
 print(data)
 new_l = filter_l(data)
 print(new_l, type(new_l))

如何解决集合问题?

#!/usr/bin/python3
from random import randint
 
 
def filter_l(data):
 # 迭代集合中值,满足条件为True返回x
 return {x for x in data if x % 3 == 0}
 
if __name__ == '__main__':
 # 集合生成式
 data = {randint(0, 100) for x in range(10)}
 print(data)
 new_l = filter_l(data)
 print(new_l, type(new_l))

如何逻辑整理?

无论是解析器还是普通方法,都需要for循环,if判断,逻辑都是满足条件返回值,过滤出满足条件的值,无论是生成器还是解析器都满足这个格式:“ 返回值 for循环 if判断 “,通过lambda满足格 式:“lambda 输入值:条件, 格式化数据

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python MNIST手写识别数据调用API的方法

python MNIST手写识别数据调用API的方法

MNIST数据集比较小,一般入门机器学习都会采用这个数据集来训练 下载地址:yann.lecun.com/exdb/mnist/ 有4个有用的文件: train-images-idx3...

详解python算法之冒泡排序

详解python算法之冒泡排序

python之冒泡排序 概念: 重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相...

粗略分析Python中的内存泄漏

引子 之前一直盲目的认为 Python 不会存在内存泄露, 但是眼看着上线的项目随着运行时间的增长 而越来越大的内存占用, 我意识到我写的程序在发生内存泄露, 之前 debug 过 lo...

python,Django实现的淘宝客登录功能示例

本文实例讲述了python,Django实现的淘宝客登录功能。分享给大家供大家参考,具体如下: 在整理python,django资料的时候,发现了这个东西,也许是当初某位网友或者朋友发过...

利用anaconda作为python的依赖库管理方法

利用anaconda作为python的依赖库管理方法

python自带的pip管理依赖库太麻烦,pip很多库不存在,或者一些库并不支持window系统。而且每次用pip下载库经常不成功,结果还是要手动下载跟自己python对应的whl包安装...