python map lambda 分割字符串_python之lambda、filter、map、reduce的用法讲解

lambda:实现python中单行最小函数。

v = lambda x:x ** 2

#相当于

defv(x):return x ** 2

filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)。

filter(function or None, sequence) -> list, tuple, or string:入参为函数和列表/元组/字符串,返回值为item列表/元组/字符串。

filter 函数会对指定序列执行过滤操作,filter(function or None, sequence) -> filter object (list, tuple, or string in 2.x)

filter 函数会对序列参数 sequence 中的每个元素调用 function 函数,最后返回的结果包含调用结果为True的元素

注意:3.x 返回的是一个filter object (后续的函数map也是返回object),要加上list()等类型转换;而之前 2.x 版本的返回值类型和参数sequence的类型相同

importmathdefis_sqr(x):return math.sqrt(x) % 1 ==0

newlist= filter(is_sqr, range(1,101))print(list(newlist))

map(function, sequence) :对sequence中的item依次执行function(item),将执行结果function(item)组成一个List返回。

map(function, sequence[, sequence, ...]) -> list:入参是为函数和列表/元组/字符串,返回值为function(item)列表。

map 函数会对指定序列做映射操作,map(function or None, sequence) ->  map object (list, tuple, or string in 2.x)

map 函数会对序列参数 sequence 中的每个元素调用 function 函数,返回的结果为每一个元素调用function函数的返回值

a =map(lambda x:x*x-4,range(10))

print(list(a))

结果 : [-4, -3, 0, 5, 12, 21, 32, 45, 60, 77]

reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用。function接收的参数个数只能为2,先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给function,然后只返回一个结果。

reduce(function, sequence[, initial]) -> value:入参是为函数和列表/元组/字符串和初始值,返回值为数值。

注意:reduce 函数在 3.x 版本不是内建函数了,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里,用的话要 先引入

from functools import reduce

from functools importreducedefadd(x,y):return x +yprint(reduce(add, range(1,100),0))

总结:

1、filter和map都是python内置的函数,可以直接调用,reduce在functools模块

2、要过滤删减序列用filter;要对多个序列做函数运算用map,reduce用得少。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值