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。