python高阶函数及匿名函数

一、 高阶函数

-实参是一个函数名
-函数的返回值是一个函数


 print(abs(10))

# 函数本身也可以赋值给变量 变量可以指向函数
f = abs
print(f(-10))

def fun(x,y,f):
    return f(x),f(y)
print(fun(-10,34,abs))

在这里插入图片描述

二、内置高阶函数

1、map函数
map():接收两个参数,一个是函数 一个是序列
map将传入的函数依次作用到序列的每个元素,并且把结果作为新的序列返回
练习
要求:对一个序列[-1,3,-4,-5]的每一个元素求绝对值
代码如图:

import random
print(list(map(abs,[-1,3,-4,-5])))

# 对每个元素求阶乘
def f(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(li)

print(list(map(f,li)))

在这里插入图片描述2.reduce函数
reduce():把一个函数作用在一个序列上,这个函数必须接收两个参数
reduce把结果继续和序列的下一个元素做累积计算
reduce(f,[x1,x2,x3,x4]) = f(f(x1,x2),x3),x4)
python2中:reduce是内置函数
python3:from functools import reduce

from functools import reduce

def multi(x,y):
    return x*y
print(reduce(multi,range(1,10)))

def add(x,y):
    return  x+y
print(reduce(add,range(1,101)))

在这里插入图片描述
3.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))))

在这里插入图片描述
4.sorted函数
默认sort方法和sorted函数均由小到大排序,reverse=True表示由大到小排序。
l

ist = [6,8,9,1,3,4,5,6,8,9]
# list.sort()
# print(list)
# 不改变原来的列表内容 生成一个新的列表
# list2 = sorted(list)
# print(list2)
# print(list)
# list2 = [6,-8,-9,-1,3,4,5,6,8,9]
# list2.sort()
# print(list2)
# list3 = sorted(list2,key=abs)
# print(list3)
#
# s = ['fdsf','Ffsdf','dsa','ERW']
# print(s)
# print(sorted(s))
# print(sorted(s,key=str.lower))
# print(sorted(s,key=str.upper))

在这里插入图片描述
abs表示按绝对值排序:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

练习

i

nfo = [
    # 商品名称,商品数量,商品价格
    ('apple1',200,32),
    ('apple2', 40, 12),
    ('apple3', 1000, 23),
    ('apple1', 40, 2),
    ('apple1', 40, 5),

]

# 按照商品数量进行排序
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))

在这里插入图片描述
在这里插入图片描述

三、匿名函数

匿名函数的关键字为 lambda
冒号前面是 形参 冒号后面是返回值

from functools import reduce

def add(x,y):
    return x+y

print(reduce(add,range(10)))
print(reduce(lambda x,y:x+y,range(10)))

# def mypow(x):
#     return x **2
print(list(map(lambda x:x**2,range(5))))

# def isood(num):
#     return num%2 ==0
# print(isood(11))

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、付费专栏及课程。

余额充值