Python语言与信息数据获取和机器学习程序员程序猿阵线联盟-汇总各类技术干货

1-1如何在列表、字典、集合中根据条件筛选数据

2018-02-28  本文已影响9人  cuzz_
image.png

过滤列表中的负数

对于列表我们最通用的方法就是迭代

data = [3, 9, -1, 10, 20, -2, 0]

res = []
for x in data:
    if x >= 0:
        res.append(x)

print(res)

我们还可以通过filter(function, iterable)函数

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

from random import randint

# randint中-10和10都包括, 如果不需要x可以用下划线表示
data = [randint(-10, 10) for _ in range(10)]
data1 = filter(lambda x: x >= 0, data)

print(list(data1))

我们还可以用列表解析

data1 = [x for x in data if x >= 0]

print(list(data1))

使用timeit测试发现列表解析比filter快一倍,所以我们首选列表解析

字典筛选

筛选出分数大于等于90分的学生

from random import randint
# 随机生成一个学号从1-20学生的分数
d = {x: randint(60, 100) for x in range(1, 21)}

d1 = {key: value for key, value in d.items() if value >= 90}

print(d1)

集合筛选

筛选出集合中能被3整除的数

from random import randint

data = [randint(-10, 10) for _ in range(10)]
s = set(data)
s1 = {for x in s if x % 3 == 0}

print(s1)
上一篇下一篇

猜你喜欢

热点阅读