当前位置: 首页 > news >正文

python系列教程211——map

朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow

声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习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比列表解析运行起来更快,并且它所编写的代码也较少。

http://www.lryc.cn/news/110704.html

相关文章:

  • SW - 3D打印件最好带上浮雕文字标记
  • Kafka-副本数量设置
  • 解决github打不开的方法
  • 【云原生】Docker中容器管理常用所有命令
  • Flutter video_player点击重新播放
  • CSS3属性之text-overflow:ellipsis
  • 【深度学习_TensorFlow】梯度下降
  • C++使用 auto 自动推断类型
  • 【前端面试手撕题】call、bind、new、freeze、浅拷贝
  • MacBook Pro 16 M1 Max 升级 macOS Ventura 13.5 兼容测评
  • 实现5*5正方形网格x轴和y轴显示对应数值组件封装
  • 基于Matlab实现图像压缩技术(附上完整源码+图像+程序运行说明)
  • 棒球联盟对于市场发展规划·棒球1号位
  • ansible控制主机和受控主机之间免密及提权案例
  • flink1.17 eventWindow不要配置processTrigger
  • Python导出SqlServerl数据字典为excel
  • PB:DDE服务器函数
  • awk经典实战、正则表达式
  • Python脚本-时间盲注
  • 面试总结-Redis篇章(十)——Redis哨兵模式、集群脑裂
  • el-table那些事
  • kubernetes(一)
  • 计算机网络(6) --- https协议
  • (三)Node.js - 模块化
  • 502 bad gateway报错
  • Flink学习教程
  • flutter开发实战-实现音效soundpool播放音频及控制播放暂停停止设置音量
  • Sequence 2023牛客暑期多校训练营6 E
  • 【ASP.NET MVC】使用动软(二)(10)
  • STM32入门学习之独立看门狗(IWDG)