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() 以后就是对列表中的数值的绝对值进行排序

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

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

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

目录
相关文章
|
3月前
|
缓存 算法 数据处理
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数
|
7月前
|
Serverless Python
python高阶函数
【10月更文挑战第2天】
41 5
|
7月前
|
缓存 并行计算 算法
如何提高 Python 高阶函数的性能?
【10月更文挑战第2天】
39 3
|
10月前
|
数据采集 网络协议 数据挖掘
网络爬虫进阶之路:深入理解HTTP协议,用Python urllib解锁新技能
【7月更文挑战第30天】网络爬虫是数据分析和信息聚合的关键工具。深入理解HTTP协议及掌握Python的urllib库对于高效爬虫开发至关重要。HTTP协议采用请求/响应模型,具有无状态性、支持多种请求方法和内容协商等特点。
109 3
|
10月前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
【7月更文挑战第25天】在网络技术快速发展的背景下, Python因其简洁的语法和强大的库支持成为学习网络编程的理想选择。
116 5
|
10月前
|
机器学习/深度学习 数据采集 算法
Python编程语言进阶学习:深入探索与高级应用
【7月更文挑战第23天】Python的进阶学习是一个不断探索和实践的过程。通过深入学习高级数据结构、面向对象编程、并发编程、性能优化以及在实际项目中的应用,你将能够更加熟练地运用Python解决复杂问题,并在编程道路上走得更远。记住,理论知识只是基础,真正的成长来自于不断的实践和反思。
WK
|
8月前
|
测试技术 Python
python中的高阶函数作用
Python中的高阶函数(HOFs)在编程中扮演着重要角色,通过将通用操作封装为可复用的函数,提升了代码的抽象能力和可维护性。它们是实现函数式编程的关键,支持映射、归约、过滤等模式,并简化了回调函数的使用。此外,高阶函数还用于实现装饰器,进一步增强了代码的功能,减少了冗余,提高了代码的可读性和可维护性。
WK
56 0
WK
|
8月前
|
Python
python中的高阶函数有哪些用途
在Python中,高阶函数(HOFs)接受或返回函数,增强了代码的灵活性与复用性。常见的高阶函数包括`map()`、`filter()`、`reduce()`及`sorted()`等,它们分别用于对序列应用函数、过滤元素、累积计算及排序。`reduce()`位于`functools`模块中,而`sorted()`则常与键函数配合使用。此外,`lambda`函数和装饰器也常与高阶函数结合使用,前者提供快速定义匿名函数的方式,后者则在不改变原函数的基础上添加新功能。高阶函数的应用远不限于这些特定函数,任何符合定义的函数都可视为高阶函数。
WK
49 0
|
10月前
|
开发者 Python
Python Socket编程:不只是基础,更有进阶秘籍,让你的网络应用飞起来!
【7月更文挑战第25天】在网络应用蓬勃发展的数字时代,Python凭借其简洁的语法和强大的库支持成为开发高效应用的首选。本文通过实时聊天室案例,介绍了Python Socket编程的基础与进阶技巧,包括服务器与客户端的建立、数据交换等基础篇内容,以及使用多线程和异步IO提升性能的进阶篇。基础示例展示了服务器端监听连接请求、接收转发消息,客户端连接服务器并收发消息的过程。进阶部分讨论了如何利用Python的`threading`模块和`asyncio`库来处理多客户端连接,提高应用的并发处理能力和响应速度。掌握这些技能,能使开发者在网络编程领域更加游刃有余,构建出高性能的应用程序。
73 3