写点什么

Python 中堪称神仙的 6 个内置函数

  • 2022 年 6 月 01 日
  • 本文字数:1202 字

    阅读完需:约 4 分钟

大家好,建议大家多使用 Python 的内置函数,既能提高自己的 Python 程序速度,同时还能保持代码简洁易懂。


今天,我会一次性分享 6 个堪称神仙的内置函数。在很多计算机书籍中,它们也通常作为高阶函数来介绍。而我自己在日常工作中,经常使用它们来使代码更快,更易于理解。喜欢记得收藏、关注、点赞。


注:完整代码、资料、技术交流,文末获取


Lambda 函数


Lambda 函数用于创建匿名函数,即没有名称的函数。它只是一个表达式,函数体比 def 简单很多。当我们需要创建一个函数来执行单个操作并且可以在一行中编写时,就可以用到匿名函数了。


lambda [arg1 [,arg2,.....argn]]:expression


lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。例如:


lambda x: x+2


如果我们也想像 def 定义的函数随时调用,可以将 lambda 函数分配给这样的函数对象。


add2 = lambda x: x+2


add2(10)


输出结果:


利用 Lambda 函数,可以将代码简化很多,具体再举个例子。


如上图所示,结果列表 newlist 是使用 lambda 函数用一行代码生成的。


Map 函数


map()函数会将一个函数映射到一个输入列表的所有元素上。


map(function,iterable)


比如我们先创建了一个函数来返回一个大写的输入单词,然后将此函数应有到列表 colors 中的所有元素。


def makeupper(word):


return word.upper()
复制代码


colors=['red','yellow','green','black']


colors_uppercase=list(map(makeupper,colors))


colors_uppercase


此外,我们还可以使用匿名函数 lambda 来配合 map 函数,这样可以更加精简。


colors=['red','yellow','green','black']


colors_uppercase=list(map(lambda x: x.upper(),colors))


colors_uppercase


如果我们不用 Map 函数的话,就需要使用 for 循环。


如上图所示,在实际使用中 Map 函数会比 for 循环依次列表元素的方法快 1.5 倍。


Reduce 函数


当需要对一个列表进行一些计算并返回结果时,reduce()是个非常有用的函数。举个例子,当需要计算一个整数列表所有元素的乘积时,即可使用 reduce 函数实现。[1]


它与函数的最大的区别就是,reduce()里的映射函数(function)接收两个参数,而 map 接收一个参数。


reduce(function, iterable[, initializer])


接下来我们用实例来演示 reduce()的代码执行过程。


from functools import reduce


def add(x, y) : # 两数相加


return x + y
复制代码


numbers = [1,2,3,4,5]


sum1 = reduce(add, numbers) # 计算列表和


得到结果 sum1 = 15


我们会看到,reduce 将一个相加函数 add()作用在一个列表[1,2,3,4,5]上,映射函数接收了两个参数,reduce()把结果继续和列表的下一个元素做累加计算。


此外,我们同样可以使用匿名函数 lambda 来配合 reduce 函数,这样可以更加精简。


from functools import reduce


numbers = [1,2,3,4,5]


sum2 = reduce(lambda x, y: x+y, numbers)


得到输出 sum2= 15,与之前结果保持一致。


需要注意:Python3.x 开始 reduce()已经被移到 functools 模块里[2],如果我们要使用,需要用 from functools import reduce 导入.

用户头像

还未添加个人签名 2022.05.23 加入

还未添加个人简介

评论

发布
暂无评论
Python 中堪称神仙的6个内置函数_开发微hkkf5566_InfoQ写作社区