python系列教程211——map

news/2024/11/30 2:40:22/

朋友们,如需转载请标明出处: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.ppmy.cn/news/1006956.html

相关文章

android 实现拨打电话号码。

在拨打电话号码之前,预设一个B号码,正常使用电话时,本来输入的是A号码。实际拨打的是B号码。但是接听页面显示的是A号码。是不是比较绕,在android9之前,各厂商的实现不了,android7以下可以实现。但是现在很…

打破疑惑:一次搞懂hasattr()、getattr()、setattr()在Python中的应用

简介 在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询。这些函数提供了一种方便的方式来检查对象是否具有特定属性,获取属性的值,以及设置属性的值。本文将从入门到精通,全…

第二十二章 原理篇:UP-DETR

最近一直在忙各种各样的面试,顺便重新刷了一遍西瓜书。 感觉自己快八股成精了,但是一到写代码的环节就拉跨,人真是麻了。 许愿搬家前可以拿到offer! 参考教程: https://arxiv.org/pdf/2011.09094.pdf https://zhuanla…

【NLP pytorch】基于BiLSTM-CRF模型医疗数据实体识别实战(项目详解)

基于BiLSTM-CRF模型医疗数据实体识别实战 1数据来源与加载1.1 数据来源1.2 数据类别名称和定义1.3 数据介绍2 模型介绍2 数据预处理2.1 数据读取2.2 数据标注2.3 数据集划分2.4 词表和标签的生成3 Dataset和DataLoader3.1 Dataset3.2 DataLoader4 BiLSTM模型定义5 CRF模型6 模型…

浏览器 判断

浏览器的 类别判断 无非就是从三个方面&#xff1a; 是否是 移动端 判断是否为 微信浏览器 判断浏览器 所在的 系统 判断 <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevic…

[代码案例] pytorch快速上手写机器学习

任务背景 给定未来一段时间的温度&#xff0c;使用神经网络预测输出是天气炎热&#xff0c;温暖&#xff0c;凉爽&#xff0c;偏冷&#xff0c;寒冷 输入是未来 20天内的气温数据&#xff0c;输出标签是 0,1,2,3,4 代码 """Author : 琛歌很无聊Description: …

用docker 部署springboot项目

# 加入java FROM bitnami/java # WORKDIR /usr/local/test/boot-work#镜像内的工作目录 WORKDIR /usr/local/test# ENV workPath /usr/local/test/boot-work# 宿主的当前目录 boot-v1.jarjar 拷贝到 WORKDIR下boot.jar ADD boot-v1.jar boot.jar # 暴露80端口 EXPOSE 80 # 启动…

掌握 JVM 的参数及配置

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ JVM&#xff08;Java虚拟机&#xff09;是Java编程语言的核心组件之一&#xff0c;它负责执行Java程序&#xff0c;并提供一系列参数和配置选项&#xff0c;可以调整Java程…