python中filter、map、reduce函数的使用

1.filter

功能:filter主要作用是过滤掉序列中不符合函数条件的元素,当序列中要删、减元素时,可以使用filter函数。

格式:fliter(function,sequence)

function可以是匿名函数或者自定义函数,它可以对后面的sequence序列的每个元素判定是否符合条件,返回True或者False,从而留下True的元素;sequence可以是列表、元组或者字符串。

注意:迭代器需要进行列表转换

#匿名函数
import random
allNum = []
for i in range(9):
allNum.append(random.randint(1,20))
print(allNum)

print(list(filter(lambda x:x%3,allNum)))

#输出:

  #[8, 8, 9, 5, 4, 11, 19, 12, 1]
  #[8, 8, 5, 4, 11, 19, 1]

#自定义函数
import random
def fun(x):
return x%2

allNum = []
for i in range(9):
allNum.append(random.randint(1,20))
print(allNum)

print(list(filter(fun,allNum)))
#输出:

  #[12, 16, 6, 10, 7, 4, 4, 10, 17]
  #[7, 17]


 

 

2.map

功能:map主要作用是求一个序列或者多个序列进行函数映射之后的值。

格式:map(function,iterable1,iterable2)

function中参数值可以是一个,也可以是多个;后面的iterable代表function运算中的参数值,有几个参数值就传入几个iterable。

注意:1.迭代器需要进行列表转换   2.map中如果传入的序列长度不一,会依据最短的序列计算

#匿名函数
x=[1,2,3,4]
y=[3,4,6,8,8]
print(list(map(lambda x,y:(x*y)+2,x,y)))

#输出:[5, 10, 20, 34]

 


#自定义函数
x=[1,2,3,4]
y=[3,4,6,8,8]

def fun(x,y):
return(x*y)+2


print(list(map(fun,x,y)))

#输出:[5, 10, 20, 34]

 

 

3.reduce

功能:reduce是对一个序列进行压缩运算,得到一个值。

格式:reduce(function,iterable)

function中必须传入两个参数,iterable可以是列表或者元组。

注意:reduce使用前需要导包 from functools import reduce,map和filter是内置函数,所以可以直接调用.


#匿名函数
from functools import reduce
x=[3,4,6,8,8]
print(reduce(lambda x,y:(x+y),x))

#输出:29
#自定义函数
from functools import reduce
x=[3,4,6,8,8]
def fun(x,y):
    return x+y
print(reduce(fun,x))

#输出:29

 

计算原理:

先计算头两个元素:f(3,4),结果为7;

再把结果和第三个元素6计算:f(7,6),结果为13;

再把结果和第四个元素8计算:f(13,8),结果为21;

再把结果和第四个元素8计算:f(21,8),结果为29;

计算完毕,返回结果29。

posted @ 2019-06-01 10:04  不不田鼠  阅读(1496)  评论(0编辑  收藏  举报