Python之常用内建高阶函数

map函数

        用于接收一个函数及多个迭代对象,会根据提供的函数对指定序列做映射,然后返回一个新的map对象

例1:需要一个参数

a = map(lambda x:x*x,[1,2,3])
print(a)

输出结果:

<map object at 0x00FA73D0>

此时a指向于map出的新对象,可以使用list(a)或for循环查看,输出结果为:

[1, 4, 9]

函数运行过程:每次从列表中取一个值,赋值给x,通过lambda的表达式之后,通过map新建一个列表对象。

即:

        1*1 = 1    2*2 =4  3*3 =9

例2:需要多个参数

a = map(lambda x,y:x+y,[1,2,3],[4,5,6])
print(list(a))

输出结果:

[5, 7, 9]

函数运行过程:每次从[1,2,3]列表中取一个值赋值给x,同时从[4,5,6]列表中取一个值赋值给y,并通过lambda表达式之后,通过map新建一个列表对象。

即:

        1+4 = 5  2+5 =7  3+6 =9

例3:调用自定义函数

list1 = [0,1,2,3,4,5,6]
list2 = ['Sun','M','T','W','T','F','S']
def TestMap(x,y):
    return (x,y)
list3 = map(TestMap,list1,list2)
print(list(list3))

输出结果:

[(0, 'Sun'), (1, 'M'), (2, 'T'), (3, 'W'), (4, 'T'), (5, 'F'), (6, 'S')]

函数运行过程同上。


Filter函数

        用于过滤可迭代对象中不符合条件的元素,返回由符合条件元素组成的filter对象

        filter(function or None,sequence) 

        其中: function:接收一个参数,返回布尔值True或False

                 None: 则无需过滤,直接输出

                sequence: 可迭代对象,可以是str,tuple,list                

例1:

l1 = filter(lambda x:x%2,[1,2,3,4])
print(list(l1))

输出结果:

[1, 3]

函数运行过程:每次从列表中取一个值,赋值给x,通过lambda的表达式对2取余,如余为0为False,非0为True。

 即:[1,3]

例2:

l1 = filter(None,"test")
print(list(l1))

输出结果为:

['t', 'e', 's', 't']
函数运行过程:None代表着无需过滤,直接filter新对象


reduce函数

        对参数序列中元素进行累积。注:使用时应先导入from funtools import reduce

例1:

from functools import reduce
def TestReduce(x,y):
    return x+y
a = reduce(TestReduce,["aa","bb","cc"],"dd")
print(a)

输出结果:

ddaabbcc

函数运行过程:其中"dd"为初始值传给TestReduce中x, 每次从列表中取一个值赋值给y,并把结果返回赋值给x。

例2:

from functools import  reduce
a = reduce(lambda x ,y:x+y,[1,2,3,4],5)
print(a)

输出结果:

15

函数运行过程: 将初始值5赋值给x,每次从列表中取一个值赋值给y,通过lambda表达式运行后,将结果返回赋值给x,再进行下一次运行。

即:

        5+1 = 6        6+2 = 8      8+3 = 11     11+4 = 5

例3:

from functools import reduce
def add(x,y):
    return x+y

a = reduce(add,range(0,101))
print(a)

输出结果:

5050


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值