Python小技巧之map函数、filter函数、reduce函数

一、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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值