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

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

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

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

使用迭代for循环和列表解析式 

from random import randint

list1=[randint(-10,10) for x in range(15)] 

res=[]
#使用迭代
for one in list1:
    if one>=0:
        res.append(one)
#使用解析式
#res = [one for one in list1 if one >= 0]

print(res)

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

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

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

d1 = {x:randint(60,100) for x in range(1,21)}

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

print(d1)
print(d2)

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
data1 = {randint(1,100) for x in range(30)}
data2 = {x for x in data1 if x%3==0}
print(data1)
print(data2) 

总结 

生成列表,字典,集合                                                     解析式 :

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}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值