python 高阶函数

filter()

高阶函数filter()接收一个函数和一个序列 ,filter()把传入的函数依次作用于序列的每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素, 返回值是一个Iterator。

res = filter(lambda x: x > 5, [1, 2, 10, 20])
for i in res:
    print(i)

10
20

 

map() 

map()函数至少接收两个参数,一个为函数,其他是可迭代对象,map将传入的函数依次作用到可迭代对象的每个元素,并把结果作为新的Iterator返回。
res = map(abs, [-1, -2, -3, -4, -5])
for i in res:
    print(i)

1
2
3
4
5

reduce()

reduce()函数接受三个参数, 第一个为函数, 第二个为序列, 把序列前两个元素传给函数参数,函数加工后,然后把得到的结果和第三个元素作为两个参数传给函数参数, 函数加工后得到的结果又和第四个元素作为两个参数传给函数参数。

from functools import reduce
res = reduce(lambda x, y: x*10+y, [1, 3, 5, 7, 9])
print(res)

13579

lambda

关键字lambda表示匿名函数,冒号前面的x表示函数参数, 冒号后面为函数体, 就是函数体只能有一个表达式, 返回值为该表达式的结果

f = lambda x: x*x
print(f(2))

4

partial

functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单

import functools
int2 = functools.partial(int, base=8)
print(int2('64')) # 按8进制转换

52

sorted

sorted 排序函数 接受三个参数,可迭代对象, key:key 是带一个参数的函数, reverse是否反转

print(sorted([1, -2, 0, 4, -3], key=abs, reverse=True))
[4, -3, -2, 1, 0]

  

 
原文地址:https://www.cnblogs.com/frank-shen/p/10354815.html