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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27089287/article/details/79029194

案例 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}

生成                                                                             解析

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




猜你喜欢

转载自blog.csdn.net/qq_27089287/article/details/79029194