python-1-如果在列表,字典在,集合中根据条件筛选数据?

这里写图片描述
这里写图片描述
通用做法:迭代+判断

data = [1,5,6,-2,-6,0,9]
res=[]
for x in data:
    if x >= 0:
        res.append(x)
print(res)

高级方式:
这里写图片描述
列表解析:
随机生成-10到10的十个随机数
注意:python2.x->xrange();python3.x->range()

from random import randint
data = [randint(-10,10) for _ in range(10)]

print(data)

方法一:

filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
filter(lambda x:x >= 0,data)

报错:
解决:在python3里面,map(),filter的返回值已经不再是list,而是iterators, 所以想要使用,只用将iterator 转换成list 即可, 比如 list(map()) 。

list(filter(lambda x:x >= 0,data))

方法二:

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

这里写图片描述
可以看出列表解析更快些。不过这两种方式都是远快于迭代的方案的。
筛选字典
字典的格式:{2: 97, 19: 93, 13: 98},k : v.保持形式不变,然后遍历判断

生成:
from random import randint
d = {x: randint(60,100) for x in range(1,21)} 
同时迭代字典中的键和值
{k: v for k,v in d.iteritems() if v > 90}

报错:AttributeError: ‘dict’ object has no attribute ‘iteritems’
解决:Python3.5中:iteritems变为items
集合解析:

将列表转换测集合
s = set(data)
print({x for x in s if x % 3 ==0})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值