码迷,mamicode.com
首页 > 其他好文 > 详细

map,reduce,filter

时间:2018-10-10 17:07:00      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:one   object   from   tab   let   接受   不同的   keyword   contain   

map

map(function,Iterable) map将传入的函数一次作用到序列的每个元素,并把结果作为新的 Iterator返回

  names = [‘james‘,‘ooc‘,‘rose‘,‘green‘]

方式一:手动实现

  new_names = []
for name in names:
   new_names.append(‘steven ‘ + name)
print(new_names)
# [‘steven james‘, ‘steven ooc‘, ‘steven rose‘, ‘steven green‘]

方式二:列表生成

  new_names = [‘steven ‘ + name for name in names]
print(new_names)
# [‘steven james‘, ‘steven ooc‘, ‘steven rose‘, ‘steven green‘]

方式三:map + 匿名函数

  lam_name = map(lambda x:‘steven‘ + x , names)
print(lam_name)
print(list(lam_name))
# [‘steven james‘, ‘steven ooc‘, ‘steven rose‘, ‘steven green‘]

Reduce

reduce(function,sequence) reduce把一个函数作用在一个序列[x1, x2, x3, …]上,reduce把结果继续和序列的下一个元素做累计计算

方式一:手动实现

  num = 0
for i in range(101):
num += i
print(num)
# 5050

方式二:列表生成式

  print(sum([i for i in range(101)]))
# 5050

方式三:reduce + 匿名函数

在python3中 reduce要在functools中调用

  from functools import reduce
print(reduce(lambda x,y:x+y,[i for i in range(101)],100))
# 5150 reduce
# 实际上 def reduce(function, sequence, initial=None) 有第三个参数# 初始值为none
print(reduce(lambda x,y:x+y,[i for i in range(101)]))
# 5050
print(reduce(lambda x,y:x+y,[‘h‘,‘e‘,‘l‘,‘l‘,‘o‘],‘-------‘))
# -------hello

Filter

filter()函数用于过滤序列。和map()类似,filter()也接受一个函数和一个序列。和map()不同的是,fileter()把传入的函数依次作用于每个元素,然后根据返回值true 还是false 决定保留还是丢弃该元素。

  names = [‘steven james‘,‘ooc‘,‘steven rose‘,‘steven green‘]

方式一:手动实现

  new_names = []
for name in names:
   if name.startswith(‘steven‘):
       new_names.append(name)
print(new_names)
# [‘steven james‘, ‘steven rose‘, ‘steven green‘]

方式二:列表生成式

  new_names=[name for name in names if name.startswith(‘steven‘)] 
# [‘steven james‘, ‘steven rose‘, ‘steven green‘]

方式三:filter + 匿名函数

  lam = filter(lambda name:name.startswith(‘steven‘),names)
print(lam)
print(list(lam))
# <filter object at 0x1050d6550>
# [‘steven james‘, ‘steven rose‘, ‘steven green‘]

 

map,reduce,filter

标签:one   object   from   tab   let   接受   不同的   keyword   contain   

原文地址:https://www.cnblogs.com/OutOfControl/p/9767173.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!