python中 对列表 集合和字典 根据条件筛选出数据

案例 1 :对列表中的数据进行筛选。

如 list1=[-1,2,-3,-4,-5,6,76,3,23,12]  在列表中过滤掉负数,只保留列表中的正数 

使用列表解析式生成一个含有正数和负数的随机列表 (使用random中的randint方法)

>>> from random import randint
>>> list1=[randint(-10,10) for x in range(15)]     在-10到10之间随机生成15个数组成列表list1

1.使用迭代 for循环 

 

res=[]
for one in list1:
    if one>=0:
        res.append(one)
print(res)

输出结果是 [10, 10, 1, 0, 10, 9, 1] 。

 

2 使用列表解析

res=[one for one in list1  if one>=0]

print(res)

使用解析式和迭代 输出的结果是一样的 。

因为效率问题,当数据量过大,优先使用解析式。

案例2 筛选出字典中符合条件的值 比如学生成绩字典  筛选出成绩大于90的同学

生成随机字典 

d1={k:randint(60,100) for k in range(1,21)}   k是键 作为学生的学号,由range(1,21)生成1-20个学号,而值(成绩分数)是有随机函数生成60-100之间的分数。

使用字典解析

d2={k:v for k,v in d1.items()  if v>90}

案例3  筛选出集合中可以被3整除的数值

同样  首先生成一个集合 使用随机函数生成

from random import randint

data={randint(1,100) for x in range(30)}

data1={x for x in data if x%3==0}

总结下  生成随机字典 列表                                                解析式 :

list1=[randint(-10,10) for x in range(15)]   列表             res=[one for one in list1  if one>=0]

d1={k:randint(60,100) for k in range(1,21)} 字典           d2={k:v for k,v in d1.items()  if v>90}

data={randint(1,100) for x in range(30)}  集合               data1={x for x in data if x%3==0}

生成                                                                             解析

格式 循环条件                                                          格式  遍历  循环条件 

 

 

 

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值