python中的高阶函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的高阶函数相关的知识,希望对你有一定的参考价值。

1.高阶函数
-实参是一个函数名
-函数的返回值是一个函数
print(abs(16))
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)))

技术图片

#将一个字符串转换成整型

from functools import reduce

def str2int(s):
def char2int(ch):
c = str(x): x for x in range(10)
return c[ch]
def fun(n1, n2):
return n1 * 10 + n2
return reduce(fun, map(char2int, s))

num = str2int(‘12345‘)
print(type(num), num)

技术图片

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.匿名函数
匿名函数的关键字为 lambda,冒号前面是 形参 冒号后面是返回值 。
lambda函数能实现普通一样的功能,能传入参数,也能返回运算结果;不同的是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 x2
print(list(map(lambda x:x
2,range(5))))
def isood(num):
return num%2 ==0
print(list(filter(lambda x:x%2==0,range(100))))

技术图片

5.sorted( )函数

sorted( )函数是用来对可迭代对象排序的,与列表的list( )函数不同,后者是在原位置上进行排序的,排序后原列表的元素顺序会发生改变,而前者是将排序后的结构生成到一个新的列表中。

s = [‘dfs‘,‘Fds‘,‘tda‘,‘Eds‘]
print(s)
print(sorted(s))
print(sorted(s,key=str.lower))
print(sorted(s,key=str.upper,reverse=True))
技术图片

info = [

商品名称 商品数量 商品价格

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

技术图片

#假设我们用一组tuple表示学生名字和成绩,
L =[(‘Bob‘, 75), (‘Adam‘, 92), (‘Bart‘, 66),
(‘Lisa‘, 88)],按名字进行排序

技术图片

以上是关于python中的高阶函数的主要内容,如果未能解决你的问题,请参考以下文章

Python基础高阶函数

python中的函数式编程与装饰器

python 中的高阶函数

Python--高阶函数函数嵌套名称空间及变量作用域闭包装饰器

python中的高阶函数

Python高阶函数