python 高阶函数
Posted 凌逆战
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 高阶函数相关的知识,希望对你有一定的参考价值。
函数式编程
用一系列函数解决问题
传入参数一定,结果必一定(只有一个输入一个输出)
1 def myadd(x, y):# 不可重入函数: 2 return x + y 3 y = 200 4 def myadd2(x):#可重入函数 5 return x + y 6 print(myadd2(10)) # 210 7 y = 300 8 print(myadd2(10)) # 310
函数式编程的要求:
创建函数最好不要访问局部作用域以外的变量,这样可以保证返回结果的唯一性(可重入性)
高阶函数
满足下面条件之一的为高阶函数:
1、函数接受一个或者多个函数作为参数传入
2、函数返回一个函数
python内建的高阶函数:
map、filter、sorted
map函数:
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
格式:
map(func,iterables1,,iterables2,.........)
参数:
- function -- 函数,有一个或两个参数
- iterable -- 一个或多个序列
返回值
- Python 2.x 返回列表。
- Python 3.x 返回迭代器
1 def power(x): 2 return x**2 3 # for x in map(power,range(1,10)): 4 # print(x) 5 # for x in map(lambda x :x**2,range(1,10)): 6 # print(x) 7 print(list(map(power,range(1,10)))) 8 #[1, 4, 9, 16, 25, 36, 49, 64, 81] 9 10 # 提供了两个列表,对相同位置的列表数据进行相加 11 print(list(map(lambda x,y:x+y,[1,2,3,4],[4,3,2,1]))) 12 #[5, 5, 5, 5] 13 #必须要加list,不加list返回的是内存地址 14 #<map object at 0x0000022754376278> 15 16 #求:1 ** 9 + 2 ** 8 + 3 ** 7 + ......9 ** 1 17 s = 0 18 for x in map(pow, range(1, 10), range(9, 0, -1)): 19 s += x 20 print(s)
filter函数:
函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
语法:
filter(function,iterable)
参数:
function——判断函数
iterable——可迭代函数
此处插入代码1
此处插入代码2
sorted函数:
将原可迭代对象的数据进行排序,生成排序后的列表
sort与sorted区别:
sort是应用在列表list上的方法,sorted可以对可迭代的对象进行排序操作,list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
语法
sorted(iterable,key,reverse)
iterable:可迭代对象
key:主要用来进行元素比较,只有一个参数,具体的函数的参数就是取值与可迭代对象中,指定可迭代对象中的一个元素来进行排序
reverse:排序规则,reverse = True 降序 , reverse = False 升序(默认)
返回值:
返回重新排序的列表
以上是关于python 高阶函数的主要内容,如果未能解决你的问题,请参考以下文章