from functools import reduce
#在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 functools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数
lst = [1,2,3,4,5,6,7,8,9,10]
result1 = list(filter(lambda x: x%2==0, lst))
#[2, 4, 6, 8, 10]
print([x for x in lst if x%2==0])
result2
= list(map(lambda x: 2*x+1, lst)) #[3, 5, 7, 9, 11, 13, 15, 17, 19, 21] print([2*x+1 for x in lst])
result3
= reduce(lambda x,y: x+y, lst) #55 求和 print(result3)

在对象遍历处理方面,其实Python的for..in..if语法已经很强大,并且在易读上胜过了lambda。
  比如上面map的例子,可以写成:
    print [x * 2 + 1 for x in lst]
  非常的简洁,易懂。
  filter的例子可以写成:
    print [x for x in lst if x % 2 == 0]
  同样也是比lambda的方式更容易理解。

lambda 定义了一个匿名函数

  lambda 并不会带来程序运行效率的提高,只会使代码更简洁。

  如果可以使用for...in...if来完成的,坚决不用lambda。

  如果使用lambda,lambda内不要包含循环,如果有,我宁愿定义函数来完成,使代码获得可重用性和更好的可读性。

  总结:lambda 是为了减少单行函数的定义而存在的。

 

map(function, iterable, ...)会根据提供的函数对指定序列做映射,Python3中返回迭代器,如果要转换为列表,可以使用 list() 来转换

 

filter(function判断函数, iterable可迭代对象)函数用于过滤序列,过滤掉不符合条件的元素,Python3返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换

 

reduce() 函数会对参数序列中元素进行累积。

 

 

posted on 2020-07-29 23:10  math98  阅读(133)  评论(0)    收藏  举报