自己做的网站怎么上传网络,邢台165信息交友,石家庄手机网站建站,廉洁文化手册页面设计模板朋友们#xff0c;如需转载请标明出处#xff1a;https://blog.csdn.net/jiangjunshow
声明#xff1a;在人工智能技术教学期间#xff0c;不少学生向我提一些python相关的问题#xff0c;所以为了让同学们掌握更多扩展知识更好地理解AI技术#xff0c;我让助理负责分享…朋友们如需转载请标明出处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.appendx 10 # Add 10 to each item...updated[11,12,13,14]因为这是一个常见的操作Python已经为我们提供了一个内置的工具函数——就是map函数。它会对一个序列对象中的每一个元素应用被传入的函数。如下所示。
def incx: return x 10 # Function to be run...listmapinc,counters # Collect results[11,12,13,14]map对列表中的每个元素都调用了inc函数。别忘了map在Python 3.0中是一个可迭代对象因此在这里我们用一个列表list调用来迫使它生成所有的结果以显示这在Python 2.6中不是必需的。
由于map期待传入一个函数这恰好是lambda常出现的地方之一
listmaplambda x: x 3,counters # Function expression[4,5,6,7]这里函数将会为counters列表中的每一个元素加3。因为这个函数不会在其他的地方用到所以将它写成了一行的lambda。
某些程度上来说使用map与for循环是等效的我们可以自己编写一个类似map的映射工具。
def mymapfunc,seq:... res []... for x in seq: res.appendfuncx... return res我们可以用内置函数或我们自己的对等形式将其映射到一个序列
listmapinc,[1,2,3] # Built-in is an iterator[11,12,13]mymapinc,[1,2,3] # Ours builds a list see generators[11,12,13]尽管如此因为map是内置函数所以有一些性能方面的优势简而言之它要比自己编写的for循环更快。所以尽管我们也能够来模拟map但是当有速度优势的内置函数已经提供了这样的功能再去模拟意义不是很大。
另外map调用与列表解析很相似但是map对每一个元素应用函数调用而不是任意的表达式。因为这点限制从某种意义上来说它成为了不太通用的工具。尽管如此在某些情况下目前map比列表解析运行起来更快并且它所编写的代码也较少。