python map函数、filter函数、reduce函数

1.map函数:map(func,可迭代对象):

①func可以是自定义的函数,也可以是功能简单的匿名函数(通过lambda定义)

②处理逻辑:表示将传入的可迭代对象依次循环,将每个元素按照传入的func逻辑进行处理,再依次返回给原对象,结果与原列表的元素个数、顺序一致

③在python2中map的处理结果是一个列表,在python3中结果是一个迭代器,可通过list( )转换为列表查看内容,迭代器只可以进行一次处理操作,之后会清空

print(list(map(lambda x:x*2,[1,6,3,7])))---使用匿名函数
#执行结果为[1,36,9,49]
li=[-3,0,2,-8,5]
def cal(a):
    if a>=0:
        pass
    else :
       a=-a
    return a
print('将负数转化为正数',list(map(cal,li)))  #使用自定义函数,传给map函数是自定义函数的函数名
#将负数转化为正数 [3, 0, 2, 8, 5]

2.filter函数:filter(func,可迭代对象):

①func可以是自定义的函数,也可以是功能简单的匿名函数(通过lambda定义)

②处理逻辑:表示将传入的可迭代对象依次循环,将每个元素按照传入的func逻辑进行处理,处理结果返回一个布尔值,真则保留,否则删除这个元素

③与map函数类似,filter函数在python3中的结果是一个迭代器,需通过list( )转换为列表查看内容

print(list(filter(lambda x:len(x)>5,['abcde','1234567','abcdefg','123'])))
#执行结果为['1234567', 'abcdefg']
a=['abcde','1234567','abcdefg','123']
def f(x): 
    if len(x)<5:
        return True
    else :
        return False

print('保留长度小于5的元素',list(filter(f,a)))
#执行结果为:保留长度小于5的元素 ['123']

3.reduce函数:reduce(func,可迭代对象[,初始值]):

①reduce函数使用之前需要先通过functools模块导入from functools import reduce

②func可以是自定义的函数,也可以是功能简单的匿名函数(通过lambda定义)

③处理逻辑:表示将传入的可迭代对象依次循环,将所有元素按照传入的func逻辑进行处理,最后得到一个值

from functools import reduce
print('原列表为[1,3,6,8],所有元素相加所得结果为',reduce(lambda x,y:x+y,[1,3,6,8]))
#执行结果为:原列表为[1,3,6,8],所有元素相加所得结果为 18
from functools  import reduce
array=['123','abc','456def','g']
def f(x,y):
    return x+y

print('用haha拼接结果为',reduce(f,array,'haha'))  #指定初始值
#执行结果为:用haha拼接结果为 haha123abc456defg---可看出字符串拼接时,指定的初始值放在最开头位置
原文地址:https://www.cnblogs.com/Forever77/p/9766810.html