一、筛选数据
引言
生活中, 我们会遇到各种各样的数据,但是总得需要容器去装它们,python中的数据结构——列表,元组,字典就能派上用场,但是数据多了起来,我们有时候需要进行筛选就可以用到下面的一些方法
比如给定一个列表,让我们剔除里面的负数,我们通常想到的是迭代法
代码语言:javascript复制[1,22,-4,3,-9,8]
看代码
代码语言:javascript复制a = [1,22,-4,3,-9,8]
b = []
for i in a:
if(i>0):
b.append(i)
print(b)
今天就要讲讲其它的办法来解决这些问题
一、列表解决方案
1、 先生成一个随机的列表 2、运用列表解析的方式去实现数据筛选
代码如下:
代码语言:javascript复制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个人,我们要进行筛选分数及格的同学
代码语言:javascript复制from random import randint
a = {x:randint(0,100) for x in range(1,26)}
print(a)
有列表解析,同样也有字典解析
代码语言:javascript复制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)
三、集合解决方案
借用列表解决方案中生成随机列表的例子,我们直接把其转换成集合的形式
代码语言:javascript复制from random import randint
a = [randint(-10,10) for i in range(1,11)]
print(a)
b = set(a) #把列表a变成集合
print(b)
我们再进行一个特殊的筛选,我们要得到能被5整除的数,这里要用到集合解析
代码语言:javascript复制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)
方法和列表解析一模一样!!!
所以,你学会了嘛