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]