查看原文
其他

Python入门教程14:高阶函数用法解析

作者一小红牛 我的Python教程 2024-01-14


Python,速成心法

敲代码,查资料,问度娘

练习,探索,总结,优化


高阶函数higher-order function,它有两个特点:第一,变量可以指向函数,第二,函数名其实就是指向函数的变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称为高阶函数。编写高阶函数,就是让函数的参数能够接收其他函数。


01map的用法


map()是Python中的一个高阶函数,它接受一个函数和一个可迭代对象作为参数,并返回一个新的可迭代对象,其中每个元素都是调用函数并传入可迭代对象的元素的结果。

#例子1:使用map计算列表a,b的相乘值a=[1,2,3,4]b=[10,20,30]def f(x,y): return x*yL=map(f,a,b)print(list(L))#输出结果[10, 40, 90],可以结果为三个元素,说明最少列表b为标准,做一一对应计算


例子02:高阶函数map将数字转换为字符串


a=10#将10转换为字符串s=str(a)print(type(s))a=[1,2,3,4,5,6,7,8,9] #将列表中每个元素转换为字符串L=map(str,a)print(list(L))


03计算列表里面每个数值的平方

# 一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]a=[1,2,3,4,5,6,7,8,9]def f(x): return x*xresult_list=[]for i in a: result_list.append(f(i))#print(result_list)
#使用map实现it=map(f,a) #返回的it是一个可迭代的对象#print(type(it))print(list(it))#输出结果[1, 4, 9, 16, 25, 36, 49, 64, 81]


02reduce的用法

reduce是一个Python内置函数,用于对可迭代对象中的元素进行累积操作。它的基本语法如下:

reduce(function, iterable, initializer)

reduce函数的返回值是累积结果。如果function返回None,则累积结果为None;否则,累积结果为function(accumulator, element),其中accumulator是累积器的当前值,element是传入累积器的每个元素。

例子1:计算列表的求和

from functools import reduce#导入reduce模块a=[1,2,3,4,5,6,7,8,9,10]sum=0for i in a: sum+=iprint('累加和:',sum)def sumTest(x,y): return x+ysum=reduce(sumTest,a)print('reduce计算列表求和:',sum) #输出55



03 filter的用法

filter()是Python中的一个高阶函数,可以应用于一个可迭代对象上,过滤掉不需要的元素,返回过滤后的迭代对象。以下是filter()的使用示例代码:

#1.在一个列表中,删掉偶数,保留奇数def is_odd(n): # if n%2==0: # return False # else: # return True return n%2 == 1L=filter(is_odd,[1,2,3,4,5,6,7,8,9,10])print(list(L))
#2.一个序列中的空字符串删掉a=['A', '', 'B', None, 'C', ' ']def not_empty(s): return s and s.strip()L=filter(not_empty,a)print(list(L))


04 sorted的用法

sorted(): 它可以对可迭代对象进行排序,并返回一个新的已排序的列表。以下是sorted()的使用示例代码:

#1.对数值进行排序sort_list=sorted([42,422,4,2,-100,3,-10])print('默认升序排序',sort_list)#逆序排序,给sorted添加reverse参数sort_list=sorted([42,422,4,2,-100,3,-10],reverse=True)print('逆序',sort_list)
#对字符串ASCII A:65 a:97sort_list=sorted(['abc','ad','ABC','D','d','C'])print('字符串排序',sort_list)
sort_list=sorted(['abc','ad','ABC','D','d','C'],reverse=True)print('字符串逆序排序',sort_list)
#sorted是高阶函数,他还可以接收一个key函数来实现自定义的排序#对数值列表,按绝对值的大小排序sort_list=sorted([42,422,4,2,-100,3,-10],key=abs)print('默认升序排序',sort_list)
#对字符串列表,忽略大小写sort_list=sorted(['abc','ad','ABC','D','d','C'],reverse=True,key=str.lower)print('字符串逆序排序',sort_list)


06 匿名函数lambda

Lambda 表达式是 Python 中的一种函数式编程语言特性,它可以将一个函数封装在一对括号中,然后作为一个普通的函数来使用。Lambda 表达式通常用于简洁地编写函数,或者用于创建匿名函数。

下面是一些 Lambda 表达式的示例:

#1.定义一个简单的函数,接受两个参数并返回它们的和:sum = lambda x, y, z: x + y + zprint(sum(2, 3, 5)) # 输出 10
#2.定义一个接受任意数量参数的函数,并返回它们的乘积:product = lambda *args: args[0] * args[1]* args[2]print(product(5, 2, 3)) # 输出 6
#3.定义一个返回布尔值的函数,用于判断一个值是否为 True 或 False:is_even = lambda x: x % 2 == 0print(is_even(4)) # 输出 Trueprint(is_even(5)) # 输出 False
#4.使用map()和filter()操作numbers = [1, 2, 3, 4, 5]print(list(map(lambda x: x**2, numbers)))
# 定义一个列表 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# 应用`filter()`函数过滤掉不是偶数的元素even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)# 输出: [2, 4, 6, 8, 10]


07 偏函数的使用


使用functools.partial(original_fuc,param1,param....)在原有函数基础上生成一个偏函数。


偏函数:就是以原函数为基础,将某个位置上的参数固定住(默认是从第一个参数固定),后续参数重新扩展传递给原函数,对外则是生成一个新函数。


print(int('12345')) #将字符串按十进制转换为整数print('转换为八进制:',int('12345',base=8))print('转换为十六进制:',int('12345',16))#将'1010' 按二进制转换为整数print(int('1010',base=2))print(int('101010',base=2))print(int('10101010',base=2))#定义函数def new_int(s): return int(s,base=2)print(new_int('1010'))print(new_int('101010'))print(new_int('10101010'))
from functools import partialnew_int=partial(int,base=2)print(new_int('1010'))print(new_int('101010'))print(new_int('10101010'))


完毕!!感谢您的收看

------------往期更多精彩内容------------

Python最新版本的安装教程(附详细图)

Pycharm的下载与安装方法(附教程图)

Pycharm初始化,新建一个python程序

Pycharm英文页界面,2种汉化的设置方法(教程附图)

Python常用的英文单词集合

Python基础教程:01代码的规范书写

Python基础教程:02内置函数的用法解析

Python基础教程:03运算符与表达式

Python基础教程:04流程控制语句

Python基础教程:05字符串String的用法解析

Python基础教程:06列表,元组,字典的用法

Python入门教程:07文件及目录操作

Python入门教程:08变量,保留字,字符串索引

Python入门教程:09常用的模块库

Python入门教程10:datetime的用法

Python入门教程:11推导式的写法

Python入门教程12:pip命令的使用

Python入门教程13:json的用法

-------------------------------------------------

---------------Python源码集合---------------

Python源代码分享:01九九乘法表

Python源代码分享:02海龟画图五角星

Python源代码分享:03画一个奥运五环图

Python源码分享:04列表数据的奇偶求和

Python源代码分享:05使用turtle模块绘制一个彩色螺旋图案

Python源代码分享:06猜数字大小与剪刀石头布


继续滑动看下一个

Python入门教程14:高阶函数用法解析

作者一小红牛 我的Python教程
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存