1.高阶函数
-实参是一个函数名
-函数的返回值是一个函数
print(abs(-11))
#函数本身也可以赋值给变量 变量可以指向函数
f = abs
print(f(-10))
def fun(x,y,f):
return f(x),f(y)
print(fun(-10,34,abs))
2.map函数
“”"
map()函数 接收两个参数 一个是函数 一个是序列
map将传入的函数依次作用到序列的每个元素 并且把结果作为新的序列返回
“”"
#对于序列[-1,3,-4,-5]的每个元素求绝对值
import random
#print(list(map(abs,[-1,3,-4,-5])))
#对于序列的每个元素求阶乘
def factoria(x):
“”“对x求阶乘”""
res = 1
for i in range(1,x+1):
res = res * i
return res
li = [random.randint(2,7) for i in range(10)]
print(list(map(factoria,li)))
3.reduce函数
“”"
reduce():把一个函数作用在一个序列上 这个函数必须接收两个参数
,reduce把结果继续和序列的下一个元素做累积计算
reduce(f,[x1,x2,x3,x4,x5] = f(f(f(x1,x2),x3),x4)
python2.x:reduce是内置函数
python3.x:from functools import reduce
“”"
from functools import reduce
def multi(x,y):
return x*y
print(reduce(multi,range(1,4)))
def add(x,y):
return x+y
print(reduce(add,[1,2,3,4,5]))
4.filter函数
“”"
filter过滤函数
和map()类似,也接收一个函数和一个序列
但是和map()不同的是,filter()把传入的函数依次作用于
每个元,然后根据返回值是True还是False决定保留还是丢弃该元素
“”"
def isodd(num):
if num % 2==0:
return True
else:
return False
print(list(filter(isodd,range(100))))
5.sorted函数
#li = [1,2,3,4]
#a = li.sort(reverse=True)
#print(a)
#"""
#默认sort和sorted方法由小到大进行排序,reverse=True由大到小进行排序
#"""
#b = sorted(li,reverse=True)
#print(b)
info = [
# 商品名称 商品数量 商品价格
(‘apple1’,200,32),
(‘apple3’, 40, 12),
(‘apple2’, 40, 2),
(‘apple4’,1000,23),
(‘apple5’, 40, 5)
]
print(sorted(info))
#按照商品数量进行排序
def sorted_by_count(x):
return x[1]
#按照商品价格进行排序
def sorted_by_price(x):
return x[2]
#先按照商品数量由小到大进行排序,如果商品的数量一样
#则按照商品价格由小到大进行排序
def sorted_by_count_price(x):
return x[1],x[2]
print(sorted(info,key=sorted_by_count))
print(sorted(info,key=sorted_by_price))
print(sorted(info,key=sorted_by_count_price))
6.匿名函数
“”"
匿名函数的关键字为lambda
冒号前面的是形参 冒号后面的是返回值
“”"
from functools import reduce
#lambda x, y: x + y
#def add(x,y):
return x +y
print(reduce(lambda x, y: x + y,[1, 2, 3, 4, 5]))
#def mypow(x):
return x**2
print(list(map(lambda x:x**2,range(5))))
#def is_ood(num):
return num %2==0
print(list(filter(lambda x:x%2==0,range(100))))