python入门到精通python函数式编程与应用详解(代码片段)

大数据小禅 大数据小禅     2022-12-06     663

关键词:

🚀 作者 :“大数据小禅”

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

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

目录

python函数式编程

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

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

什么是匿名函数?

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

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

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

使用lambda表达式的时候,我们可以这样操作

power = lambda x : x ** 2     #前面的x表示函数的一个入参,后面的是表示对入参的一个运算
print(power(2))

输出:
4

觉得太麻烦,还可以这样调用

print((lambda x: 2 * x)(8))
输出:16

ambda表达式的基本格式

lambda 入参 : 表达式
入参可以有多个,比如

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

lambda表达式的使用场景

一般适用于创建一些临时性的,小巧的函数。比如上面的 power函数,我们当然可以使用 def来定义,但使用 lambda 来创建会显得很简洁,尤其是在高阶函数的使用中。

定义一个函数,传入一个list,将list每个元素的值加1

def add(l = []):
 return [x +1 for x in l]
print(add([1,2,3]))

输出:
【2,3,4

上面的函数改成将所有元素的值加2 可能大家会说,这还不简单,直接把return里的1改成2就行了。但是真的行吗?如果函数被多个地方使用,而其他地方并不想加2,怎么办?这好办,把变得那部分抽出来,让调用者自己传.

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))

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

使用map函数,将两个对应位置求和,之后返回,也就是对[1,2,3],[4,5,6]两个序列进行操作之后,返回结果[5,7,9]。

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】
我们可以看到不会报错,但是结果以个数少的为准

Python中的高阶函数之reduce

reduce函数的基本格式

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]))

Python中的高阶函数之 filter

filter顾名思义是过滤的意思,带有杂质的(非需要的数据),经过filter处理之后,就被过滤掉。

filter函数的基本格式

filter(function_or_None, iterable)

filter()接收一个函数和一个序列。把传入的函数依次作用于每个元素,然后根据返回值是**
True还是False决定保留还是丢弃该元素。
使用filter函数对给定序列进行操作,最后返回序列中所有偶数

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

Python中的高阶函数之sorted

orted从字面上就可以看去这是个用来拍序的函数,sorted 可以对所有可迭代的对象进行排序操作

sorted的基本格式:

sorted(iterable, key=None, reverse=False)
iterable -- 可迭代对象。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指
定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
对序列做升序排序
print(sorted([1, 6, 4, 5, 9]))
对序列做降序排序
print(sorted([1, 6, 4, 5, 9], reverse=True))
对存储多个列表的列表做排序
data = [["Python", 99], ["c", 88]]

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

#输出:
[['c', 88], ['Python', 99]]

python入门自学进阶——5--类与对象

面向对象编程是函数式编程的一种变化。python既可以函数式编程,也可以面向对象编程。函数式编程可以做所有事,只是看适不适合,如果使用面向对象更简洁,就使用面向对象。对比:函数式编程,定义... 查看详情

第一个想学的语言是python,该看哪几本书比较好,从入门可以到精通那种

1.《Python编程从入门到精通》本书循序渐进、由浅入深地详细讲解了Python3语言开发的核心技术,并通过具体实例的实现过程演练了各个知识点的具体使用流程。通过两个综合实例的实现过程,介绍了Python3语言在综合项目中的使... 查看详情

[python入门到精通系列]-python基础入门之函数(代码片段)

...上一篇文章中,我们通过一个案例展开,了解了Python数据类型、变量、条件控制等。这篇文章,继续沿着上一篇文章来了解Python的基础语法。Python的实战案例下面这个案例,是根据用户输入的数字进行排序输出... 查看详情

[python入门到精通系列]-python基础入门之函数(代码片段)

...上一篇文章中,我们通过一个案例展开,了解了Python数据类型、变量、条件控制等。这篇文章,继续沿着上一篇文章来了解Python的基础语法。Python的实战案例下面这个案例,是根据用户输入的数字进行排序输出... 查看详情

python函数式编程,看这一篇就够了!

点击机器学习算法与Python学习,选择加星标精彩内容不迷路机器之心、Python编程时光本文对Python中的函数式编程技术进行了简单的入门介绍。头等函数在Python中,函数是「头等公民」(first-class)。也就是说,... 查看详情

python函数式编程,看这一篇就够了!

点击机器学习算法与Python学习,选择加星标精彩内容不迷路机器之心、Python编程时光本文对Python中的函数式编程技术进行了简单的入门介绍。头等函数在Python中,函数是「头等公民」(first-class)。也就是说,... 查看详情

python从入门到精通python函数的高级知识点,更深入的吸收知识,不做知识的牙签(不浅尝辄止)收藏下来保证有用!!!(代码片段)

...#xff0c;感谢您阅读本文,欢迎一键三连哦。本文将介绍Python函数的高级知识点:重点介绍函数参数传递机制以及函数式编程。干货满满,建议收藏,需要用到时常看看。小伙伴们如有问题及需要,欢迎踊跃留言... 查看详情

python从入门到精通python函数的高级知识点,更深入的吸收知识,不做知识的牙签(不浅尝辄止)收藏下来保证有用!!!(代码片段)

...#xff0c;感谢您阅读本文,欢迎一键三连哦。本文将介绍Python函数的高级知识点:重点介绍函数参数传递机制以及函数式编程。干货满满,建议收藏,需要用到时常看看。小伙伴们如有问题及需要,欢迎踊跃留言... 查看详情

python入门到精通python装饰器的应用详解(代码片段)

...1f680;欢迎小伙伴们点赞👍、收藏⭐、留言💬目录Python中的装饰器及其应用什么是装饰器模式在不修改原有类的情况下去添加一个新的功能从实际例子来看装饰器这个时候,如果不想修改原有的函数,又想增加一... 查看详情

python从入门到精通(二十)python并发编程的基本概念-线程的使用以及生命周期(代码片段)

您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。本篇开始学习并发编程,本文将重点介绍线程的基本概念以及线程的生命周期。干货满满,建议收藏,需要用到时常看看。小伙伴们如有问题及需... 查看详情

python从入门到精通(二十)python并发编程的基本概念-线程的使用以及生命周期(代码片段)

您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。本篇开始学习并发编程,本文将重点介绍线程的基本概念以及线程的生命周期。干货满满,建议收藏,需要用到时常看看。小伙伴们如有问题及需... 查看详情

python从入门到精通—初识python(代码片段)

Python从入门到精通—初识PythonPython基础知识学习系列博客,持续更新Python从入门到精通—初识PythonPython从入门到精通—初识Python1、Python简介2、认识"Python"3、Python版本4、Python的功能5、Python语言优点6、Python语言缺点1、Py... 查看详情

python从入门到精通—初识python(代码片段)

Python从入门到精通—初识PythonPython基础知识学习系列博客,持续更新Python从入门到精通—初识PythonPython从入门到精通—初识Python1、Python简介2、认识"Python"3、Python版本4、Python的功能5、Python语言优点6、Python语言缺点1、Py... 查看详情

1024程序员节|福利书单~

序号书名数量1玩转EVE-NG带你潜入IT虚拟世界302Python编程从入门到精通53Yii2框架从入门到精通34CCIE路由与交换第五版第二卷25vMware虚拟化与云计算故障排错16oraclePL/SQL37PythonGame入门编程18Python程雪案例设计教程——从入门到机器学习... 查看详情

与函数式编程中的“折叠”函数等效的“pythonic”是啥?

】与函数式编程中的“折叠”函数等效的“pythonic”是啥?【英文标题】:Whatisthe\'pythonic\'equivalenttothe\'fold\'functionfromfunctionalprogramming?与函数式编程中的“折叠”函数等效的“pythonic”是什么?【发布时间】:2012-05-0903:08:35【问... 查看详情

python从入门到精通:一个月就够了

来源:机器之心毫无疑问,Python是当下最火的编程语言之一。对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握Python看似是一件十分困难的事。其实,只要掌握了科学的学习方法并制定了合理的学习... 查看详情

python从入门到精通:一个月就够了

来源:机器之心毫无疑问,Python是当下最火的编程语言之一。对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握Python看似是一件十分困难的事。其实,只要掌握了科学的学习方法并制定了合理的学习... 查看详情

python入门--04函数式编程(代码片段)

正文在下面,先打个广告:概念编程语言,就是越低级的语言,越贴近计算机,抽象程度低,执行效率高,比如C语言;越高级的语言,越贴近计算,抽象程度高,执行效率低,比如Li... 查看详情