1 内置高阶函数map
map():接收两个参数 一个是函数 一个是序列
map将传入的函数依次作用到序列的每个元素 并且把结果作为新的序列返回
# 对一个序列[-1,3,-4,-5]的每一个元素求绝对值
import random
print(list(map(abs,[-1,3,-4,-5])))
2 高阶函数
(1) 高阶函数的特性
实参是一个函数
函数的返回值也是一个函数
# 函数本身也是可以赋值给变量的 变量可以指向函数
print(abs(-10))
f = abs #f=1
print(f(-10))
def fun(x,y,f):
return f(x),f(y)
print(fun(-10,34,abs))
3 内置高阶函数reduce
reduce( ):把一个函数作用在一个序列上,这个函数必须接收两个参数
reduce把结果继续和序列的下一个元素做累积计算
注意:在python2中reduce是内置函数,而在python3.x中,需要在代码前添加from functools import reduce 这样才能使用reduce函数
from functools import reduce
def multi(x,y):
return x*y
print(reduce(multi,range(1,10)))
5 内置高阶函数filter
filter过滤函数
和map( )类似的,也接收一个函数和一个序列,但是和map( )不同的是 filter( )把传入的函数依次作用于序列的每个元素 然后根据返回值是True或者False决定保留还是丢弃该元素。
#求0~100之间的所有偶数
def isodd(num):
if num % 2 == 0:
return True
else:
return False
print(list(filter(isodd,range(100))))
6 内置高阶函数sort
sort是应用在list上的方法,list的sort方法返回的是对已经存在的列表进行操作。
#排序
li = [4, 5, 6, 7, 2, 1, 3, 8, 9, 10]
li.sort()
print(li)
7 匿名函数
匿名函数的关键字 lambda
冒号前面是 形参 冒号后面是返回值
print(list(map(lambda x:x**2,range(5))))