首页 > 代码库 > python_如何在列表、字典中筛选数据?
python_如何在列表、字典中筛选数据?
实际问题有哪些?
- 过滤掉列表[3,9,-1,10.-2......] 中负数
- 筛选出字典{‘li_ming’:90,’xiao_hong’:60,’li_kang’:95,’bei_men’:98} 中值高于90的项
- 筛选出集合{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 = http://www.mamicode.com/[3, 9, -1, 10, -2]>
如何解决列表问题?
初始化列表: 生成 -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 = http://www.mamicode.com/[randint(-10, 10) for _ in range(10)]>
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 = http://www.mamicode.com/[randint(-10, 10) for _ in range(10)]>
运行速度比较:解析 > 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 = http://www.mamicode.com/{x: randint(0, 100) for x in range(10)}>
如何解决集合问题?
#!/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 = http://www.mamicode.com/{randint(0, 100) for x in range(10)}>
如何逻辑整理?
无论是解析器还是普通方法,都需要for循环,if判断,逻辑都是满足条件返回值,过滤出满足条件的值,无论是生成器还是解析器都满足这个格式:“ 返回值 for循环 if判断 “,通过lambda满足格 式:“lambda 输入值:条件, 格式化数据
python_如何在列表、字典中筛选数据?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。