大家好,欢迎来到IT知识分享网。
目录
Python中的高阶函数是指那些接受函数作为参数,或者返回函数作为结果的函数。这种特性让Python的函数编程能力非常强大,使得代码更加灵活和可重用。
(一)体验高阶函数
在Python中,abs()函数可以完成对数字求绝对值计算。
abs(-10) #10
round()函数可以完成对数字的四舍五入计算。
round(1.2) #1 round(1.9) #2
需求:任意两个数字,按照指定要求整理数字后再进行求和计算。
- 方法1
def add_num(a,b): return abs(a) + abs(b) result = add_num(-1,2) print(result) #3
- 方法2
def sum_num(a,b,f): return f(a) + f(b) result = sum_num(-1,2,abs) print(result) #3
注意:两种方法对比之后,发现,方法2的代码会更加简洁,函数灵活性更高。
- 函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。
(二)内置高阶函数
2.1 map()
描述
在Python中,map 是一个内置的高阶函数,它接收一个函数作为第一个参数(通常称为“映射函数”),然后接收一个或多个可迭代对象(如列表、元组、集合等)作为后续参数。
语法
map(function, iterable, ...)
- 将传入的函数变量func作用到iterable变量的每个元素中,并将结果组成新的列表(Python2)/迭代器(Python3)返回。
需求:计算list1序列中各个数字的2次方。
list1 = [1,2,3,4,5] def func(x): return x 2 result = map(func,list1) print(result) #<map object at 0x000002AFA5106AD0> print(list(result)) #[1,4,9,16,25]
【解释说明】
首先,定义了一个列表 list1
和一个函数 func
。
list1 = [1,2,3,4,5]
:这是一个包含五个整数的列表。def func(x): return x 2
:这是一个函数,它接受一个参数x
并返回x
的平方。
接下来,使用 map()
函数和 func
函数来处理 list1
中的每一个元素。
result = map(func, list1)
:map()
函数会遍历list1
中的每一个元素,并将它们作为参数传递给func
函数。然后,它会收集func
函数的返回值并创建一个迭代器,该迭代器包含所有这些返回值。在这个例子中,map()
函数的返回值(即result
)是一个迭代器,它包含1
的平方、2
的平方、3
的平方、4
的平方和5
的平方。
然后,尝试打印 result
:
print(result)
:因为result
是一个迭代器,所以直接打印它会显示迭代器的内存地址(如<map object at 0x000002AFA5106AD0>
),而不是迭代器中的实际值。
最后,使用 list()
函数将 result
迭代器转换为列表,并打印结果:
print(list(result))
:这里,list()
函数会迭代result
迭代器并收集所有的值到一个新的列表中。因此,输出是[1, 4, 9, 16, 25]
,这是list1
中每个元素的平方。
需要注意的是,一旦您使用 list(result)
将迭代器转换为列表,result
迭代器就被“消耗”了。这意味着如果再次尝试将 result
转换为列表(或进行其他迭代操作),您将不会得到任何值,因为迭代器已经到达了其末尾。
2.2 reduce()
描述
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
语法
reduce(func,lst)
- 其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。
- 注意:reduce(0传入的参数func必须接收2个参数。
需求:计算list1序列中各个数字的累加和。
import functools list1 = [1,2,3,4,5] def func(a,b): return a + b result = functools.reduce(func,list1) print(result)
2.3 filter()
描述
filter函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象。如果要转换为列表,可以使用list()来转换。
语法
filter(function, iterable)
- function — 判断函数。
- iterable — 可迭代对象。
示例
list1=[1,2,3,4,5,6,7,8,9,10] def func(x): return x%2 == 0 result = filter(func,list1) print(result) #<filter object at 0x0000013D68516B00> print(list(result)) #[2,4,6,8,10]
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/131450.html