当前位置: 首页 > news >正文

人工智能学习中深度学习之python基础之高阶函数

高阶函数

概念:在普通函数的基础上满足以下的条件则可以称之为高阶函数(两个条件满足一个可称为高阶函数)
1.一个函数的参数是另一个函数
2.一个函数的返回值(return)是另一个函数

1.高阶函数的推导步骤

#关于高阶函数的推导过程分为一下几个步骤:#1.数字,字符串都可以赋值给变量
a = 10
b = '你好'#2.函数也可以赋值给一个变量
def sum(num1,num2):return num1+num2
res = sum
print(res(10,20))    #30#3.变量可以作为函数的参数,进行使用
c = 50
d = 60
print(res(c,d))    #110#4.函数也可以作为函数的参数,进行调用
def fn1(fn2):return fn2()def fn2():print("函数fn2被调用了") fn1(fn2) #函数fn2被调用啦#函数fn1可以称之为高阶函数#5.一个函数的返回值是另一个函数
def fn3(fn):return fndef fn4():print("函数fn4被调用啦")r = fn3(fn4)
r()#函数fn3也可以称之为高阶函数

2.reduce函数

函数作用:reduce函数会对参数序列的元素进行累积。

reduce参数说明:

reduce(function, iterable[, initial]) -> valuefunction : 函数,有两个参数
iterable : 可迭代对象
initializer : 可选,初始参数
#使用reduce 函数会对参数序列的元素进行累积from functools import reduce#1.常用场景:计算1-10的和  list1 = [1,2,3,4,5,6,7,8,9,10]
def add(a, b):return a + bx = reduce(add, list1,100)
print(x)    #155#2.将列表[1,2,4,6,8]转换为整数12468.将列表中的每一个元素*10再加上后面的一个元素
list2 = [1,2,4,6,8]
def function(a, b):res = a*10 + breturn res
y = reduce(function, list2)
print(y)    #12468#3.求累加平均数def sum(acc,val):return (acc[0] + val, acc[1] + 1)lst = [1, 2, 3, 4, 5]
sum, n = reduce(sum,lst, (0, 0))
print(f'累加平均:{sum/n}')        #累加平均:3.0

3.filter函数

函数作用:filter 用来创建一个迭代器,该迭代器从给定可迭代对象中筛选出那些函数为True的元素

filter参数说明:

filter(function,iterable))
function:一个用于测试每个元素是否包含于结果中的函数,该函数接受一个参数返回一个布尔值
iterable:一个可迭代对象,比如说元组,列表,集合或字符串
#1.filter筛选列表中的偶数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]def is_even(number):return number % 2 == 0
res = filter(is_even, numbers)print(list(res))        #[2, 4, 6, 8, 10]'''
在这个例子中,is_even函数检查数字是否为偶数,而filter()则使用这个数字来筛选numbers
列表中的偶数,结果是一个迭代器,使用list()函数将其转换为列表以便打印
'''2.判断函数是否为空字符串
a = ['A','B',"",None,"   ","C"]
def not_empty(s):return s and s.strip()
res1 = filter(not_empty, a)
print(list(res1))    #['A', 'B', 'C']

4.sorted函数

函数说明:对函数列表排序并生成一个新列表

排序算法:对序列排序并生成一个新列表
sorted()是python的内置函数,对序列进行排序,返回一个新的列表
sorted(iterable,key,reverse=False ) false 降序,true是升序,默认升序
def sorted(*args, **kwargs)
res = sorted([20,-61,34,99,1])
print(res)    #[-61, 1, 20, 34, 99]res1 = sorted([20,-61,34,99,1],key=abs,reverse=False)
print(res1)    #[1, 20, 34, -61, 99]

5.lambda函数

函数说明:lambda函数本质是匿名函数,常用于在其他高阶函数当中组合使用

#格式:
lambda 参数1,参数2,.... : 表达式

# lambda 参数1,参数2,.... : 表达式 与传统函数定义使用的区别
add = lambda x, y: x + y
print(add(1,2))        #3def sum(num1,num2):return num1 + num2
print(sum(1,2))        #3#lambda函数与sorted函数的组合使用
pairs = [(1,'one'),(2,'two'),(3,'three'),(4,'four'),(5,'five')]
pairs_sorted = sorted(pairs,key=lambda x:x[0],reverse=False)
print(pairs_sorted)        #[(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four'), (5, 'five')]#与filter组合使用
#删除 lst = [0.5, 0.8, -0.2, 0.6, -0.7] 中绝对值较大的元素(提示三元+海象+max)
numbers = range(1,11)
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers))#[2, 4, 6, 8, 10]

6.map函数

函数说明:map() 是一个内置函数,用于对可迭代对象(如列表、元组等)中的每个元素应用指定的函数,并返回一个迭代器(map 对象)

map() 适合对可迭代对象的元素批量应用函数,尤其适合配合 lambda 表达式处理简单逻辑。它返回的迭代器可以节省内存(按需生成结果),但需要显式转换为列表或元组才能直接查看内容。

函数:

map(function, iterable, ...)

返回值说明:

一个 map 类型的迭代器,需要通过 list()tuple() 等方法转换为具体的序列才能直接查看结果。多个可迭代对象一起使用返回元素个数与最短的列表相同,其他不处理

#迭代器特性map() 返回的是迭代器,只能被遍历一次。再次遍历会返回空结果

result = map(lambda x: x*2, [1,2,3])

print(list(result)) # [2,4,6]

print(list(result)) # [](已耗尽)

#传统方法使用map函数
def square(x):return x **2nums = [1, 2, 3, 4]
result = map(square, nums)  # 返回 map 迭代器
print(list(result))  # 转换为列表:[1, 4, 9, 16]#lambda函数相同功效
nums = [1, 2, 3, 4]
print(list(map(lambda x: x** 2, nums)))  # 输出:[1, 4, 9, 16]#多个列表传递元素
a = [1, 2, 3]
b = [4, 5, 6]
# 对 a[i] 和 b[i] 求和
result = map(lambda x, y: x + y, a, b)
print(list(result))  # 输出:[5, 7, 9]#如果长度不同以最短的为例
a = [1, 2, 3, 4]  # 长度 4
b = [5, 6]        # 长度 2
result = map(lambda x, y: x * y, a, b)
print(list(result))  # 输出:[5, 12](只处理前 2 对)

http://www.dtcms.com/a/533953.html

相关文章:

  • 网站前台乱码2022最新永久地域网名
  • 备案网站可以做影视站网站开发中视屏怎样编辑到网页上
  • 株洲网站制作公司在哪里郑州网络推广广告公司
  • 做动图的网站知乎微网站站点名称
  • 提示词类型与示范学习机制(附 Qwen 模型实战代码)
  • 【016】Dubbo3从0到1系列之时间轮
  • 通州区住房和城乡建设部网站一级a做爰片免费网站瑜伽
  • cglib动态代理实现
  • 1.4.4 大数据方法论与实践指南-成本治理(省钱)
  • 自己的公司怎么做网站wordpress注册插件中文版
  • 中华建设杂志网站记者绍兴网站建设报价
  • 做家装的网站有哪些如何做网络推广
  • mysql存储过程和函数
  • 青海省高等级公路建设管局网站免费windows10云主机下载
  • 西安市建网站给单位做网站需要多少钱
  • 网站建设实践鉴定铜川泰士公馆建设网站
  • 电子商务网站有哪些内容上海网站开发团队
  • 长春电商网站建设wordpress js上传图片
  • 中国工商注册网官网淄博网站建设优化珍云
  • 营销型网站建设怎么做营销网站建设温州哪里有网站优化
  • 构建稳定数据管道:淘宝商品详情 API 的接入、监控与错误处理
  • Redis下载安装教程与使用,以及基础知识的应用
  • 哪个网站可以做视频外链企业网站建设的一般原则
  • 网站 盈利自己做个网站要多少钱
  • Gorm(十)计数 / 存在性
  • SAP 维护视图变式(Maintenance View Variants)
  • 苏州建设公司网站上海的公司地址
  • 景安网站备案要多久免费网址导航网站建设
  • 杨浦区建设小学网站首页WordPress有意思的代码特效
  • STM32F103C8T6_SPI完整教程