如何使用reduce(),filter()对数据进行求积,去除None,空字符串

简介: 如何使用reduce(),filter()对数据进行求积,去除None,空字符串

python高阶函数

reduce()函数

reduce()函数也是Python内置的一个高阶函数,reduce()函数接收的参数和map()类似,一个函数,一个list,但行为和map()不同,reduce()传入的函数必须接收两个参数,reduce()对list的每个元素反复调用函数,并返回最终值。

def prod(x, y):
    return x*y
print reduce(prod, [2, 4, 5, 7, 12])

求列表中所有数字之积

也可以使用上一篇文章,合成列表里面,我用了一个匿名函数lambda

from functools import reduce
prod = reduce(lambda, x,y:x*y, [2, 4, 5, 7, 12])

在python3中使用需要

from functools import reduce

filter()函数

filter()函数是Python内置的另一个有用的高阶函数,filter()函数接收一个函数,和一个list,这个函数的作用是对每个元素进行判断,返回True或False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新的list

这里举一个对我自己来说非常有用的例子:

删除none或者空字符串

在爬虫里总是会和搜集到储存在列表里面的信息,对于他们加一些过滤,或是异常处理是很有必要的

def is_not_empty(s):
    return s and len(s.strip()) > 0
filter(is_not_empty, ['test', None, '', 'str', '  ', 'END'])

结果:['test', 'str', 'END']

相关文章
|
8月前
lambda中使用filter过滤
lambda中使用filter过滤
jdk8 Stream流中将集合转成map,重复key处理,统计最大值,获取某个属性集合等10种最常用方法
jdk8 Stream流中将集合转成map,重复key处理,统计最大值,获取某个属性集合等10种最常用方法
192 5
|
8月前
使用Lamda表达式、stream流遍历Map、list
使用Lamda表达式、stream流遍历Map、list
129 0
|
8月前
|
Oracle Java 关系型数据库
Java【代码分享 06】Lamda表达式将List对象中的Map对象的key全部转化为大写或者小写(去除外层循环:可用于Map对象中的key全部转化为大写或者小写)
Java【代码分享 06】Lamda表达式将List对象中的Map对象的key全部转化为大写或者小写(去除外层循环:可用于Map对象中的key全部转化为大写或者小写)
357 0
|
8月前
Stream流中将集合转成map,重复key处理,统计最大值,获取某个属性集合等12种最常用方法
Stream流中将集合转成map,重复key处理,统计最大值,获取某个属性集合等12种最常用方法
132 0
动态参数+reduce累加stream
动态参数+reduce累加stream
56 0
|
前端开发 API
用ES6中的reduce高阶函数组装查询表单分隔字符数据
上古时代,我们为了遍历都是用for循环,直到es6的出现,给我们带来了一系列好用的新特性,map、filter、find、findIndex、some、every...各个都是好手,使用这些高阶函数能极大的方便我们快速处理数据
40 0
|
Java
java8 List根据对象中属性去重-多属性去重-去除重复字符串
java8 List根据对象中属性去重-多属性去重-去除重复字符串
1199 0
|
JavaScript 前端开发 索引
javascript中过滤二维对象数组重复的字段并只保留唯一值(array.filter与Array.from)
javascript中过滤二维对象数组重复的字段并只保留唯一值(array.filter与Array.from)
615 0
List.stream() .distinct() 去重 List,字母大写方法
List.stream() .distinct() 去重 List,字母大写方法
153 0