首页 > 编程语言 > 详细

数据结构与算法相关问题(一)------列表、集合、字典中根据条件筛选数据

时间:2020-03-15 09:19:40      阅读:81      评论:0      收藏:0      [点我收藏+]

我们在实际工作中经常遇到这类问题,比如

过滤掉字典[3, 9-1, 10, 20, -2 ... ]中的负数

筛出字典{‘Lilei‘: 79, ‘Jim‘: 88, ‘Lucy‘: 92 ...}中值高于90的项

筛出集合{77, 89, 32, 20 ...}中能被3整除的元素

处理这类问题,最通用的方法就是使用for循环进行迭代,然后再加上一个if判断进行过滤。这样的方法大家肯定都会的,而且在python中使用这样的方法就显得太啰嗦了,而且执行效率也会很差,在python中我们可以使用一些高级的工具进行过滤

解决方案

列表

列表解析: [x for x in data if x >= 0]

# 生成列表
from random import randint
l = [randint(-10, 10) for _ in range(10)]
# 过滤掉列表中的负数
[x for x in l if x >= 0]

 

filter函数:filter(lambda x: x >= 0, data)

# 使用filter()函数
g = filter(lambda x: x >= 0, l)
print(list(g))

 

字典

字典解析:{k: v for k, v in d.items() if v > 90}

# 创建学生成绩字典
d = {student%d % i: randint(80, 100) for i in range(1, 21)}
# 过滤成绩在90分之上的数据
{k: v for k, v in d.items() if v >= 90}

 

集合

集合解析:{x for x in s if x % 3 == 0}

# 创建集合
s = {randint(0, 20) for _ in range(20)}
# 找到集合中能被3整除的数
{x for x in s if x % 3 == 0}

 

数据结构与算法相关问题(一)------列表、集合、字典中根据条件筛选数据

原文:https://www.cnblogs.com/583864083x/p/12495520.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!