首页 > 编程语言 >python系列教程211——map

python系列教程211——map

时间:2023-08-05 18:02:53浏览次数:41  
标签:map 函数 ... python 211 list 列表 counters

声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

编程中我们常常要做的一件事就是对列表中每一个元素都进行一个操作。例如,在一个列表counter中更新所有的数字,我们可以简单地通过一个for循环来实现。

>>>counters = [1,2,3,4]

>>>

>>>updated = []

>>>for x in counters:

...    updated.append(x + 10)     # Add 10 to each item

...

>>>updated

[11,12,13,14]

因为这是一个常见的操作,Python已经为我们提供了一个内置的工具函数——就是map函数。它会对一个序列对象中的每一个元素应用被传入的函数。如下所示。

>>>def inc(x): return x + 10    # Function to be run

...

>>>list(map(inc,counters))     # Collect results

[11,12,13,14]

map对列表中的每个元素都调用了inc函数。别忘了,map在Python 3.0中是一个可迭代对象,因此,在这里,我们用一个列表list调用来迫使它生成所有的结果以显示,这在Python 2.6中不是必需的。

由于map期待传入一个函数,这恰好是lambda常出现的地方之一:

>>>list(map((lambda x: x + 3),counters)) # Function expression

[4,5,6,7]

这里,函数将会为counters列表中的每一个元素加3。因为这个函数不会在其他的地方用到,所以将它写成了一行的lambda。

某些程度上来说,使用map与for循环是等效的,我们可以自己编写一个类似map的映射工具。

>>>def mymap(func,seq):

...    res = []

...    for x in seq: res.append(func(x))

...    return res

我们可以用内置函数或我们自己的对等形式将其映射到一个序列:

>>>list(map(inc,[1,2,3]))      # Built-in is an iterator

[11,12,13]

>>>mymap(inc,[1,2,3])          # Ours builds a list (see generators)

[11,12,13]

尽管如此,因为map是内置函数,所以有一些性能方面的优势(简而言之,它要比自己编写的for循环更快)。所以尽管我们也能够来模拟map,但是当有速度优势的内置函数已经提供了这样的功能,再去模拟,意义不是很大。

另外map调用与列表解析很相似,但是map对每一个元素应用函数调用而不是任意的表达式。因为这点限制,从某种意义上来说,它成为了不太通用的工具。尽管如此,在某些情况下,目前map比列表解析运行起来更快,并且它所编写的代码也较少。

标签:map,函数,...,python,211,list,列表,counters
From: https://blog.51cto.com/captainbed/6976923

相关文章

  • python的类方法--实例对象方法
    https://blog.csdn.net/weixin_60535956/article/details/127432990  方法区别若要修改实例的属性值,直接使用实例方法。若要修改类的属性值,直接使用类方法若是辅助功能(如打印菜单等),考虑使用静态方法,即可在不创建对象的前提下使用。注意:使用类名不能访问实例属性或实例......
  • 吕胖的Python速通之路--写在前面
    一、个人背景:7年云计算售前,对云计算理论和概念相对熟悉,主要技能是PPT制作与讲解,几乎看不懂代码大学C++几乎忘了,自学linux(鸟叔的私房菜半本+老男孩视频),算会用了。 二、学习目的:1、增加职业竞争力2、业余爱好,据说能爬虫、数据分析、写后端3、IT高度内卷,跳槽求高薪 三、速......
  • python3---argparse
    python3---argparseargparse用于设计、解析命令行参数。官方文档:https://docs.python.org/3/library/argparse.html一个求和示例:importargparseparser=argparse.ArgumentParser(description='Processsomeintegers.')parser.add_argument('integers',metavar=......
  • 简单的用Python获取一下视频弹幕,新手练手实战项目,非常简单!
    昨天看到个视频,弹幕挺有意思的,于是想着用Python给他全部扒下来。代码非常简单,接下来我们看看具体操作。需要准备这些软件Python3.8Pycharm模块使用importrequests数据请求importjieba分词importwordcloud词云importparsel数据解析importre......
  • java中ConcurrentHashMap底层原理 - 面试宝典
    ConcurrentHashMap是Java中的线程安全的哈希表实现。它通过使用分段锁(Segment)来实现并发访问的高效率。下面是ConcurrentHashMap的底层原理:数据结构:ConcurrentHashMap内部由一个Segment数组和若干个哈希桶(HashEntry)组成。每个Segment包含一个哈希桶数组和一个共享的锁。每个哈希桶......
  • Python批量爬取B站法外狂徒张三所有视频【含jS逆向解密】
    传说中,有人因为只是远远的看了一眼法外狂徒张三就进去了......
  • Sqlmap的使用
    1、get型提交sqlmap.py-u+网址sqlmap.py-uhttp://127.0.0.1/sqli/Less-1/?id=1参数levellevel的等级越高,测试的等级越广,>=2时会检查cookie里的参数>=3时检查user-agent和refereer--dbs              查询所有的数据库sqlmap.py-uhttp://127.0.0.1/sql......
  • 【python_6】基础语法:标识符和运算符!
    1.什么是标识符在python程序中,我们可以给很多东西起名字,比如:变量的名字方法的名字类的名字等等这些名字,我们把它统一的称之为标识符,用来做内容的标识。所以,标识符:是用户在编程的时候所使用的一系列名字,用于给变量,类,方法等命名。2.标识符的命名规则标识符命名的规则主要有三类内容限......
  • python100到练习题(一)
    编写一个程序,输入两个数并计算它们的和。num1=float(input("请输入第一个数:"))num2=float(input("请输入第二个数:"))sum=num1+num2print("两个数的和为:",sum)编写一个程序,输入一个字符串,并倒序输出该字符串。string=input("请输入一个字符串:")reverse_string=stri......
  • python: Text-to-Speech and Speech-to-Text
     """python.exe-mpipinstall--upgradepippipinstallpyttsx3pipinstallcomtypespipinstallPillowpipinstallrequestspipinstallPocketSphinxpipinstallSpeechRecognitionpython:3.11"""importsysimportos......