0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

6个堪称神仙的内置函数

科技绿洲 来源:快学Python 作者:快学Python 2023-10-21 14:41 次阅读

之前给大家分享过3个节省时间的Python技巧,当时就提出了,大家可以多使用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]^

它与map函数的最大的区别就是,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导入.

enumerate 函数

enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。它的语法如下所示:

enumerate(iterable, start=0)

它的两个参数,一个是序列、迭代器或其他支持迭代对象;另一个是下标起始位置,默认情况从0开始,也可以自定义计数器的起始编号。

colors = ['red', 'yellow', 'green', 'black']
result = enumerate(colors)

如果我们有一个存放colors的颜色列表,运行后就会得到一个enumerate(枚举) 对象。它可以直接在for循环中使用,也可以转换为列表,具体用法如下所示。

for count, element in result:
    print(f"迭代编号:{count},对应元素:{element}")

图片

Zip 函数

zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表 ^[3]^ 。

我们还是用两个列表作为例子演示:

colors = ['red', 'yellow', 'green', 'black']
fruits = ['apple', 'pineapple', 'grapes', 'cherry']
for item in zip(colors,fruits):
    print(item)

输出结果:

图片

当我们使用zip()函数时,如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。

prices =[100,50,120]
for item in zip(colors,fruits,prices):
    print(item)

图片

Filter 函数

filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表,其语法如下所示 ^[4]^ 。

filter(function, iterable)

比如举个例子,我们可以先创建一个函数来判断数据是否为奇数,然后使用filter()函数过滤出列表中的所有奇数:

def is_odd(n):
    return n % 2 == 1

old_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

new_list = filter(is_odd, old_list)
print(newlist)

输出结果:

图片


今天分享的这6个内置函数,在使用 Python 进行数据分析或者其他复杂的自动化任务时非常方便。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79549
  • 函数
    +关注

    关注

    3

    文章

    3882

    浏览量

    61310
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66784
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83473
收藏 人收藏

    评论

    相关推荐

    关于Python巧妙而强大的内置函数

    python内置了一些非常巧妙而且强大的内置函数,对初学者来说,一般不怎么用到,我也是用了一段时间python之后才发现,哇还有这么好的函数,这个
    发表于 12-14 14:52 468次阅读
    关于Python巧妙而强大的<b class='flag-5'>内置</b><b class='flag-5'>函数</b>

    堪称一绝的键盘扫描方法

    堪称一绝的键盘扫描方法
    发表于 08-15 17:32

    高性能的DAB内置天线

    缺点就是使用不太方便,而且不太美观。试想在一优美的环境中,你听一高保真的音质的音箱的时候,伸出一杆,是多么的不完美。新推出的DAB内置天线就会解决遇到的这种尴尬问题,既有高品质的
    发表于 06-03 17:39

    Eclipse 构建 STM32 工程中 如何实现printf函数

    自己搭建了 stm32 Eclipse 的工程 但是无法实现prinf函数 想请教一下各路神仙怎么实现啊
    发表于 08-20 08:07

    可调电源电路问题,求各路神仙指教

    自学模电中遇到电源电路问题,输出正负3V到12V的可调电压电源电路,为什么我画的不能输出3V到12V。输出的正电压在不停增长,输出的负电压稳定在455uv。我猜可能是变压器或者整流桥的问题,但是我不知道怎么操作,求各路神仙指教。
    发表于 09-28 21:34

    内置函数真的内置到XC16编译器吗?

    内置函数是否在“库”中,或者它们真的“内置”到XC16编译器吗?不可能从编译器中分离出任何未使用的内置代码,就像图书馆那样吗?我在PIC33E中使用以下内容:u
    发表于 05-07 11:26

    如何使用OpenMV内置函数来找色块?

    如何使用OpenMV内置函数来找色块?
    发表于 12-15 07:11

    python的内置函数详细资料概述

    本文档的主要内容详细介绍的是python的内置函数详细资料概述。
    发表于 11-18 08:00 0次下载

    python的常用函数有哪些

    map() 是 Python 内置的高阶函数,它接收一个函数 f 和一个list ,并通过把函数 f 依次作用在list 的每个元素上,得到一个新的 list 并返回。
    发表于 02-25 11:52 9次下载
    python的常用<b class='flag-5'>函数</b>有哪些

    python提供的68个内置函数详解

      内置函数就是Python给你提供的,拿来直接用的函数,比如print.,input等。 截止到python版本3.6.2 ,python一共提供了68个内置
    的头像 发表于 10-27 09:14 1978次阅读

    进阶必备的68个Python 内置函数分析

    来源: pypypypy 内置函数就是Python给你提供的,拿来直接用的函数,比如print.,input等。 截止到python版本3.6.2 ,python一共提供了68个内置
    的头像 发表于 11-01 10:18 3658次阅读

    msp430内置函数总结 __bic_SR_register(),__delay_cycles(x)

    msp430内置函数总结 __bic_SR_register(),__delay_cycles(x)
    发表于 11-25 09:51 0次下载
    msp430<b class='flag-5'>内置</b><b class='flag-5'>函数</b>总结 __bic_SR_register(),__delay_cycles(x)

    input( ) 输入函数和注释是什么

    定义:内置函数是Python 自带的的函数,安装Python 后可以直接使用。 语法:`函数名(参数)`
    的头像 发表于 02-23 15:27 1136次阅读
    input( ) 输入<b class='flag-5'>函数</b>和注释是什么

    python常用的内置函数和模块

    python数字包含常用的内置函数和模块,比如pow()、abs()、floor()、int()等函数,以及math、random等模块。
    的头像 发表于 03-10 10:10 702次阅读

    不属于python的内置函数

    Python是一种高级编程语言,它提供了许多内置函数,可以帮助开发人员更轻松地处理各种任务。但是,在Python中并非所有的函数都是内置函数
    的头像 发表于 11-29 14:27 536次阅读