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)
map(function,iterable...)

 

 

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 高阶函数的主要内容,如果未能解决你的问题,请参考以下文章

python之高阶函数

python中的高阶函数

python专题高阶函数

python专题高阶函数

js数组高阶方法reduce经典用法代码分享

js数组高阶方法reduce经典用法代码分享