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)