##python高阶函数##

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))))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值