python基础进阶 高阶函数基础

简介: 大家好,这里是三岁接下来带来的是传说中的高阶函数,如有不足请大家多多指出

大家好,这里是三岁接下来带来的是传说中的高阶函数,如有不足请大家多多指出


什么是高阶函数。



python支持函数式编程,但是并不是函数式编程

高阶函数需要符合以下条件(两个满足一个即可):


  • 接收一个或多个函数作为参数。
  • 将函数作为返回值返回


特色:


  • 变量可以指向函数
  • 函数名就是指向函数的变量
    (emmm,小编其实也不是很理解这两句话)


让我们看看会介绍到的几个实例:


  • map()
  • reduce()
  • filter()
  • sorted()


map()


map函数:把传入的值依次给前面的函数

使用方法:map(func, *iterables)

func 代表传入的一个函数

*iterables 代表要传入函数的值

结果会做为一个新的迭代器返回

也就是把后面的值映射到前面的函数中去

话不多说,上例子;


print(list(map(lambda x : x ** 2 , range(10))))
结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]


emmm 翻译一下

输出一个列表,列表由一个map()构成

map()里面是一个匿名函数和一串值

匿名函数代表一个值的平方

上面的代码等同于:


def square(x):
    x **= 2
    return x
map_list = list( map(square, range(10)) )
print(map_list)
结果
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]


20200524012103664.png


图丑勿怪,但是就是这个意思

三岁白话时间:就是把后面列表里面的值逐个给前面的函数返回一个迭代器,可以用列表或循环的方式输出


reduce()


reduce():把后面的值给一个二元操作函数,并将结果与列表中的下一个值继续操作。

比较绕,慢慢来,先康康使用方法

reduce(func, *iterables)

func代表一个二元操作函数

*iterables 代表要操作的集合

返回迭代以后的结果

看操作


from functools import reduce  #导入函数
print(reduce(lambda x,y : x + y , range(1, 101)) )
结合
5050


注意:python3 中reduce()要到functools模块中查找

解析:输出1到100的和

复杂(易懂写法):


from functools import reduce  #导入函数
def addnums(x, y):  #创建函数
    return x+y
print(reduce(addnums,range(1, 101)) )


2020052401465710.png


不是很清晰,但是差不多这个意识,大家克服理解理解

白话时间:后一个数和前两个的结果反应生成新的结果


filter()


filter():python中内置的用于过滤的函数

使用方法: filter(func, *iterables)

func:判断函数,返回 True 或 False

*iterables:被判断的集合

*iterables会逐个作用于func函数对于返回False的进行删除


返回的结果也是一个迭代器,需要特殊处理后输出

话不多说上例子:


print(list(filter(lambda x : x % 2 == 0,range(1,20))))
结果:
[2, 4, 6, 8, 10, 12, 14, 16, 18]


输出1到19里面的所有的偶数


def even_number(data):
    return data % 2 == 0
print(list(filter(even_number,range(1,20))))
结果:
[2, 4, 6, 8, 10, 12, 14, 16, 18]


两个函数相同,一个用了匿名函数一个用自定义函数

输出1到19里面的所有的奇数


print(list(filter(lambda x : x % 2 == 1,range(1,20))))
结果:
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]


sorted()


sorted():快速排序函数,可以对所有的可迭代对象进行排序,实质上是两个元素之间的比较

使用方法:sorted(*iterables, key = None, reverse=False)


*iterables可迭代对象(要排序的集合)

key 指点函数(排序方式)

reverse 排序规则 True表示降序,False表示升序


返回一个新的lsit(列表)而不是在原有列表上进行修改


list = [3, 6, 2, 8, 7,4]
print(sorted(list))
结果
[2, 3, 4, 6, 7, 8]


因为key = None, reverse=False 有默认值所以可以直接进行排序


list = [3, 6, 2, 8, 7,4]
print(sorted(list, reverse=True))
结果
[8, 7, 6, 4, 3, 2]


通过关键字修改参数后变成了降序排列

emmm,并没有调用函数怎么能够说是高等函数呢?

这个函数不高等! 不急,安排!!!


list01 = [6, -5, 9, -3,-8]
print(sorted(list01))
结果
[-8, -5, -3, 6, 9]
#使用绝对值进行排序
list01 = [6, -5, 9, -3,-8]
print(sorted(list01, key= abs))
结果
[-3, -5, 6, -8, 9]


使用了abs() 以后就是对列表中的数值的绝对值进行排序

其他的使用方式进行类推即可

今天的高等函数就到这里啦,这里是三岁,白话带你学编程。

记得点赞评论加收藏呦!!!

目录
相关文章
|
2天前
|
Python
【Python进阶(五)】——模块搜索及工作目录
【Python进阶(五)】——模块搜索及工作目录
|
20天前
|
Python Windows
【Python进阶必备】一文掌握re库:实战正则表达式
【Python进阶必备】一文掌握re库:实战正则表达式
12 0
|
4月前
|
机器学习/深度学习 自然语言处理 算法框架/工具
在Python中进行自然语言处理(NLP)的进阶应用
在Python中进行自然语言处理(NLP)的进阶应用
43 3
|
2天前
|
Python
【Python进阶(三)】——面向对象编程
【Python进阶(三)】——面向对象编程
|
2天前
|
Python
【Python进阶(一)】——异常与错误
【Python进阶(一)】——异常与错误
|
2天前
|
数据可视化 数据挖掘 数据处理
【Python进阶(七)】——Series数据结构
【Python进阶(七)】——Series数据结构
|
2天前
|
Python
【Python进阶(六)】——随机数与数组
【Python进阶(六)】——随机数与数组
|
2天前
|
Python
【Python进阶(四)】——魔术命令
【Python进阶(四)】——魔术命令
|
2天前
|
Python
【Python进阶(二)】——程序调试方法
【Python进阶(二)】——程序调试方法
|
9天前
|
存储 Python
Python进阶语法之推导式
本章是对自己学完基础语法后,学习python进阶语法推导式过程中,自己的一些理解和看法,因为自己从刚开始第一次看看不懂,到学习一段时间后,通过积累再次看这里的知识点发现自己有了新的理解,这次将这部分知识学完了,剩下就是通过练习来达到熟练了.本章的推导式,包含列表推导式,字典推导式,集合与元组推导式这四种.主要是对python进阶语法推导式,的练习与理解,同时也提高了自己对代码的简化和运行的能力的提高,也是在这次学习中,我发现学习代码更多需要的是对基础和知识的积累,当眼界与思维突破瓶颈,看之前难以理解的事物发现变的容易去使用和理解了.