【python入门到精通】python函数式编程与应用详解

简介: 【python入门到精通】python函数式编程与应用详解

🚀 作者 :“大数据小禅”


🚀 粉丝福利 :加入小禅的大数据社群


🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬


目录

python函数式编程

lambda表达式的用法及其使用场景

什么是匿名函数?

ambda表达式的基本格式

lambda表达式的使用场景

Python中的高阶函数之map

函数中带两个参数的map函数格式

Python中的高阶函数之reduce

Python中的高阶函数之 filter

Python中的高阶函数之sorted

对序列做升序排序

对序列做降序排序

对存储多个列表的列表做排序

python函数式编程

高级知识点:介绍匿名函数lambda,高阶函数map,reduce,filter,sorted的使用


lambda表达式的用法及其使用场景

什么是匿名函数?

匿名函数,顾名思义就是没有名字的函数,在程序中不用使用def进行定义,可以直接使用lambda关键字编写简单的代码逻辑。lambda本质上是一个函数对象,可以将其赋值给另一个变量,再由该变量来调用函数,也可以直接使用。**


平时,我们是先定义函数,再进行调用:


def power(x):
 return x ** 2
print(power(2))

image.png

power = lambda x : x ** 2     #前面的x表示函数的一个入参,后面的是表示对入参的一个运算
print(power(2))
输出:
4
觉得太麻烦,还可以这样调用
print((lambda x: 2 * x)(8))
输出:16

image.png

power = lambda x, n: x ** n
print(power(2, 3))

image.png

def add(l = []):
 return [x +1 for x in l]
print(add([1,2,3]))
输出:
【2,3,4】

image.png

def add(func,l = []):
 return [func(x) for x in l]
def add1(x):
 return x+1
def add2(x):
 return x+2
print(add(add1,[1,2,3]))
print(add(add2,[1,2,3]))
输出:
[2, 3, 4]
[3, 4, 5]
一个简简单单的问题,一定要用这么多代码实现?
def add(func,l = []):
return [func(x) for x in l]
print(add(lambda x:x+1,[1,2,3]))
print(add(lambda x:x+2,[1,2,3]))

Python中的高阶函数之map

*map的基本格式 map(func, iterables)


map()函数接收两个以上的参数,开头一个是函数,剩下的是序列,将传入的函数依次作用到序列

的每个元素,并把结果作为新的序列返回。也就是类似map(func,[1,2,3])

同样的,我们还是来完成这样一个功能:将list每个元素的值加1


def add(x):
 return x + 1
result = map(add, [1, 2, 3, 4])   #等于是对后面的序列都执行了add的操作
print(type(result))
print(list(result))   #不加这个list进行转化的话会输出:<map object at 0x000002168C98EDC8>
输出:
<class 'map'>
[2, 3, 4, 5]
使用lambda表达式简化操作
result = map(lambda x: x + 1, [1, 2, 3, 4])
print(type(result))
print(list(result))

image.png

print(list(map(lambda x, y: x + y, [1, 2, 3], [4, 5, 6])))
输出:
[5, 7, 9]
对于两个序列元素个数一样的,相对好理解。如果两个序列个数不一样的,会不会报错?
print(list(map(lambda x, y: x + y, [1, 2, 3], [4, 5])))
输出:
【5,7】
我们可以看到不会报错,但是结果以个数少的为准

image.pngimage.png

reduce(function, sequence, initial=None)

reduce把一个函数作用在一个序列上,这个函数必须接收两个参数,reduce函数把结果继续和序列的下一个元素做累积计算,跟递归有点类似,reduce函数会被上一个计算结果应用到本次计算中。

reduce(func, [1,2,3]) = func(func(1, 2), 3)    #意思是会先计算1跟2的结果并且运用到下一次的计算中
使用reduce函数,计算一个列表的乘积
from functools import reduce
def func(x, y):
 return x * y
print(reduce(func, [1, 2, 3, 4]))   #1*2,2*3,6*4
输出:
24
from functools import reduce
def func(x, y):
 return x * y
print(reduce(func, [1, 2, 3, 4],2))   #后面的那个2是初始值,不用写initial=2,直接写2就好,计算的结果是48,计算过程,初始值2会先跟1相乘,之后结果2跟2相乘,依次累加
结合lambda表达式,简化操作
from functools import reduce
print(reduce(lambda x, y: x * y, [1, 2, 3, 4]))

image.png

filter(function_or_None, iterable)

filter()接收一个函数和一个序列。把传入的函数依次作用于每个元素,然后根据返回值是**

True还是False决定保留还是丢弃该元素。

使用filter函数对给定序列进行操作,最后返回序列中所有偶数

print(list(filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5])))
输出:
【2,4】

image.png

sorted(iterable, key=None, reverse=False)
iterable -- 可迭代对象。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指
定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

image.png

data = [["Python", 99], ["c", 88]]
print(sorted(data, key=lambda item: item[1]))   #item: item[1])定位到后面那个数字,根据后面那个数字进行排序,不指定的话就是按照第一个数字的大小进行排序。key=lambd这样子就表示把这个大的列表中的小的一个列表,作为item,去传入我们的匿名表达式,item不是关键字,可以更改
#输出:
[['c', 88], ['Python', 99]]

image.png

相关文章
|
27天前
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
67 0
|
8天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
77 1
|
12天前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
61 0
|
13天前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
82 5
|
13天前
|
机器学习/深度学习 算法 安全
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
|
26天前
|
数据采集 存储 XML
Python爬虫入门(1)
在互联网时代,数据成为宝贵资源,Python凭借简洁语法和丰富库支持,成为编写网络爬虫的首选。本文介绍Python爬虫基础,涵盖请求发送、内容解析、数据存储等核心环节,并提供环境配置及实战示例,助你快速入门并掌握数据抓取技巧。
|
28天前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
91 0
|
29天前
|
存储 缓存 安全
Python字典:从入门到精通的实用指南
Python字典如瑞士军刀般强大,以键值对实现高效数据存储与查找,广泛应用于配置管理、缓存、统计等场景。本文详解字典基础、进阶技巧、实战应用与常见陷阱,助你掌握这一核心数据结构,写出更高效、优雅的Python代码。
42 0
|
2月前
|
数据采集 存储 数据可视化
Python网络爬虫在环境保护中的应用:污染源监测数据抓取与分析
在环保领域,数据是决策基础,但分散在多个平台,获取困难。Python网络爬虫技术灵活高效,可自动化抓取空气质量、水质、污染源等数据,实现多平台整合、实时更新、结构化存储与异常预警。本文详解爬虫实战应用,涵盖技术选型、代码实现、反爬策略与数据分析,助力环保数据高效利用。
109 0

推荐镜像

更多