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

在列表中筛选数据–过滤掉列表中的负数

在列表中筛选数据,我们常用的方法有三种:

迭代

from random import randint
import timeit
# data = [randint(-10, 10) for _ in range(10)]
data = [-3, 9, -9, -4, 5, 1, 7, 4, -9, 10]
def func(data):
    res = []
    for x in data:
        if x >=0:
            res.append(x)
    return res
print(func(data))
# 打印时间
print(timeit.timeit('func(data)', globals=globals(), number=10000))
[9, 5, 1, 7, 4, 10]
0.007226980999999997

filter函数

from random import randint
import timeit
# data = [randint(-10, 10) for _ in range(10)]
data = [-3, 9, -9, -4, 5, 1, 7, 4, -9, 10]
data2 = filter(lambda x : x >= 0, data) # Pyhton2.7 返回列表,Python3.x 返回迭代器对象
print(list(data2))
# 打印时间
print(timeit.timeit('data2', globals=globals(), number=10000))
[9, 5, 1, 7, 4, 10]
0.00019520599999999985

列表解析

from random import randint
import timeit
# data = [randint(-10, 10) for _ in range(10)]
data = [-3, 9, -9, -4, 5, 1, 7, 4, -9, 10]
data2 = [x for x in data if x >= 0 ]
print(data2)
# 打印时间
print(timeit.timeit('data2', globals=globals(), number=10000))
[9, 5, 1, 7, 4, 10]
0.00016285499999999994

在日常使用中优先使用列表解析

在字典中筛选数据–找到分数大于90的学生

from random import randint
data = {x: randint(60, 100) for x in range(1, 21)} # 随机生成字典数据
print(data)
data2 = {k: v for k, v in data.items() if v > 90}
print(data2)

在集合中筛选数据–找到能被3整除的数据

from random import randint
import timeit
data = set(randint(-10, 10) for _ in range(10))
print(data)
data2 = {x for x in data if x % 3 == 0}
print(data2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值