一、map函数:map(func,可迭代对象)
1、func可以是自定义的函数,也可以是功能简单的匿名函数(通过lambda定义)。
2、处理逻辑:表示将传入的可迭代对象依次循环,将每个元素按照传入的func逻辑进行处理,再依次返回给原对象,结果与原列表的元素个数、顺序一致。
3、在python2中map的处理结果是一个列表,在python3中结果是一个迭代器,可通过list( )转换为列表查看内容,迭代器只可以进行一次处理操作,之后会清空。
print(list(map(lambda x:pow(x,2),range(10)))) #使用匿名函数
#输出
#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
def f(x):
return pow(x,2)
print(map(f,range(10)),list(map(f,range(10))),sep="\n")
#输出
#<map object at 0x110ebd5a0>
#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
二、reduce函数:reduce(func,可迭代对象[,初始值])
1、reduce函数使用之前需要先通过functools模块导入from functools import reduce。
2、func可以是自定义的函数,也可以是功能简单的匿名函数(通过lambda定义)。
3、处理逻辑:表示将传入的可迭代对象依次循环,将所有元素按照传入的func逻辑进行处理,最后得到一个值【reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)】。
from functools import reduce
print('所有元素相加所得结果为',reduce(lambda x,y:x+y,range(10)))
#输出
#所有元素相加所得结果为 45
from functools import reduce
def f(x,y):
return x+str(y)
print('用first拼接结果为',reduce(f,range(10),'first')) #指定初始值
#输出
#用first拼接结果为 first0123456789 #可看出字符串拼接时,指定的初始值放在最开头位置
三、filter函数:filter(func,可迭代对象)
1、func可以是自定义的函数,也可以是功能简单的匿名函数(通过lambda定义)。
2、处理逻辑:表示将传入的可迭代对象依次循环,将每个元素按照传入的func逻辑进行处理,处理结果返回一个布尔值,真则保留,否则删除这个元素。
3、与map函数类似,filter函数在python3中的结果是一个迭代器,需通过list( )转换为列表查看内容。
print('保留平方后对3取余为1的元素', list(filter(lambda x:pow(x,2,3)==1,range(10))))
#输出
#保留平方后对3取余为1的元素 [1, 2, 4, 5, 7, 8]
def f(x):
if pow(x,2,3)==1:
return True
else :
return False
print('保留平方后对3取余为1的元素',list(filter(f,range(10))))
#输出
#保留平方后对3取余为1的元素 [1, 2, 4, 5, 7, 8]