如何在列表,字典、集合中筛选数据——进阶学习

一、筛选数据

引言

生活中, 我们会遇到各种各样的数据,但是总得需要容器去装它们,python中的数据结构——列表,元组,字典就能派上用场,但是数据多了起来,我们有时候需要进行筛选就可以用到下面的一些方法

比如给定一个列表,让我们剔除里面的负数,我们通常想到的是迭代法

[1,22,-4,3,-9,8]

看代码

a = [1,22,-4,3,-9,8]

b = []
for i in a:
    if(i>0):
        b.append(i)

print(b)

今天就要讲讲其它的办法来解决这些问题

一、列表解决方案

1、 先生成一个随机的列表
2、运用列表解析的方式去实现数据筛选

代码如下:

from random import randint

#第一步生成随机数列
data =[randint(-10,10) for _ in range(10)]#在-10到10之间随机生成数列
print(data)

#第二步,用列表解析的方式

b = [x for x in data if x>0]
print(b)

在这里插入图片描述
我们通过时间对比,第二种方式的效率比第一种高10倍

二、字典解决方案

我们先生成一个字典,比如生成班上学上的成绩,班上有10个人,我们要进行筛选分数及格的同学

from random import randint
a = {x:randint(0,100) for x in range(1,26)}
print(a)

有列表解析,同样也有字典解析

from random import randint
a = {x:randint(0,100) for x in range(1,11)}
print(a)

b = {k:x for k,x in a.items() if x>60}#同时迭代键和值,然后进行判断
print(b)

在这里插入图片描述

三、集合解决方案

借用列表解决方案中生成随机列表的例子,我们直接把其转换成集合的形式

from random import randint
a = [randint(-10,10) for i in range(1,11)]
print(a)

b = set(a) #把列表a变成集合
print(b)

在这里插入图片描述
我们再进行一个特殊的筛选,我们要得到能被5整除的数,这里要用到集合解析

from random import randint
a = [randint(-10,10) for i in range(1,11)]


b = set(a) #把列表a变成集合
print(b)
c = {i for i in b if i%3 == 0}
print(c)

方法和列表解析一模一样!!!

所以,你学会了嘛

猜你喜欢

转载自blog.csdn.net/caidewei121/article/details/87927297