Python 中堪称神仙的 6 个内置函数
大家好,建议大家多使用 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):
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) : # 两数相加
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 导入.
评论