首页 > 编程知识 正文

php关键字过滤函数,php反序列化过滤函数

时间:2023-05-04 18:39:13 阅读:245029 作者:4340

filter(function, itetable)

生成一个迭代器从这些可迭代对象元素里面从符合函数的返回值为真。iterable参数可以是一个序列,一个支持可迭代的容器,或者一个迭代器,如果function这个形参没有,那么会删除所有为false的迭代元素。这个函数等价于 (item for item in iterable if function(item)) 这个生成器表达式。或者(item for item in iterable if item)

dic = {'k1': 10, 'k2': 100, 'k3': 50, 'k4': 90}print(list(filter(lambda x: x[1] > 50, dic.items()))) # 把值大于50的由元祖组成的键值对过滤出来。

>

[('k2', 100), ('k4', 90)]

'''filter(func, iterable) filter接收的是可迭代对象中的每个元素作为func的参数,返回的是bool值,函数中设置的是判断条件返回的是在bool值为索引为True的元素'''shares={ 'IBM':36.6, 'Lenovo':23.2, 'oldboy':21.2, 'ocean':10.2, }# 把shares中的价格大于20的股票过滤出来# 1.用函数定义的方法:def func(dict): list1 = [] for i in dict: list1.append((dict[i] > 20)) return list1# 2.用lambda的方法 # 第一种方法l2 = filter(lambda x: True if shares[x] > 20 else False, [i for i in shares])# 其中x是接收的参数,也就是i,如果为False,filter函数会直接pass。也就是放True的条件上去就行了# 第二种方法l1 = filter(lambda x: shares[x] > 20, [i for i in shares])# 把股票价格大于100的字典过滤出来portfolio = [ {'name': 'IBM', 'shares': 100, 'price': 91.1}, {'name': 'AAPL', 'shares': 50, 'price': 543.22}, {'name': 'FB', 'shares': 200, 'price': 21.09}, {'name': 'HPQ', 'shares': 35, 'price': 31.75}, {'name': 'YHOO', 'shares': 45, 'price': 16.35},{'name': 'ACME', 'shares': 75, 'price': 115.65}]# 第一种方法:li = filter(lambda x: x['price'] > 100, portfolio)# x为portfolio中的每一个元素,如果x['price'] > 100为True则返回给li这个迭代器True对应的元素# 第二种方法:li9 = map(lambda x: x if x['price'] > 100 else None, portfolio)a = list(li9)def fun(l): l1 = [] for i in l: if i != None: l1.append(i) return l1print(fun(a))# 写代码,最终得到的是(每个元祖第一个元素>2,第三个*至少是4个。l1 = [1,2,3,4,5,6]l2 = ['oldboy','rzdzjy','wusir','dcdxrz','日天']tu = ('**','***','****','*******')b = filter(lambda x: x[0] > 2 and len(x[2]) > 3, zip(l1, l2, tu))print(list(b))

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。