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

Python进阶-----高阶函数map() 简介和使用

 

目录

简介:

​编辑 

示例:

示例(1):输出map()函数返回值(迭代器)结果

示例(2):与循环对比

示例(3):字符串转列表

示例(4):元组转列表

示例(5):提取字典的键key,通过函数作用放入到列表当中

示例(6):与lambda函数结合

示例(7):math函数作为function


简介:

格式:

map(function,iterable,……)

参数说明:

function:是表示函数功能

iterable:是表示可迭代对象 ,后面可以跟一个或者多个可迭代对象

功能:这个函数可以实现把可迭代对象中的每个数据依次带入功能函数(function)中

返回值:注意map() 函数并不会改变原来的数据,而是生成一个新的map对象(本质是一个迭代器),map对象第一个参数是作用功能,第二个是被功能函数作用可迭代对象,当我们去通过列表(list)进行强制转换会触发函数的作用。

其他信息:这个函数在Python2的返回值是直接返回list类型,而在Python3是返回一个map类型,但是map类型要去通过list() 转换才可以输出结果

        map() 函数是Python中的内置函数,这个函数又叫做映射函数,其实里面具有一个迭代器的功能,会依次遍历可迭代对象进行相关的操作。

help(map) 查看这个函数的相关信息 

 

示例:

示例(1):输出map()函数返回值(迭代器)结果

def fun(n):return n**2
if __name__=='__main__': #判断是不是执行文件li=[x for x in range(1,12)]re=map(fun,li)print(type(re))print(list(re))print(tuple(re))
#输出结果:<class 'map'>
#         [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121]
#         ()

 这里可以看出,re是一个map类型,当我们用list去转换re的类型,可以看到输出结果,但是如果我们用tuple去转换类型却输出不了结果,所以map类型只能通过列表类型去转换输出结果。

def fun(n):return n**2
if __name__=='__main__':li=[x for x in range(1,12)]re=map(fun,li)for i in re:print(i,end=' ')
#输出结果:1 4 9 16 25 36 49 64 81 100 121 

         这里可以看出,map的返回值是一个迭代器,我们可以去通过循环依次输出结果,在输出的时候会触发fun() 函数的作用,fun() 函数会依次作用给每一个迭代对象,然后输出

示例(2):与循环对比

那这里就有人会问了,为什么不用循环去实现这种功能呢?循环不也可以吗?当然可以,只是效率没有map() 函数高,而且没有用map() 这么秀~

def fun(n):return n**2
if __name__=='__main__':li=[x for x in range(1,12)]re=[]for i in li:num=fun(i)re.append(num)print(re)
#输出结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121]

示例(3):字符串转列表

if __name__=='__main__':str1='123456'result=map(int,str1)print(list(result))
#输出结果:[1, 2, 3, 4, 5, 6]

示例(4):元组转列表

if __name__=='__main__':tu=(x for x in range(1,11))result=map(str,tu)print(list(result))
#输出结果:['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']

示例(5):提取字典的键key,通过函数作用放入到列表当中

def fun(n):return n*2
if __name__=='__main__':d={1:'good',2:'nice',3:'wao',4:'bless'}result=map(fun,d)print(list(result))
#输出结果:[2, 4, 6, 8]

示例(6):与lambda函数结合

1.

if __name__=='__main__':li=[x for x in range(-7,8) if x%2==0]result=map(lambda y:y**2+y,li)print(list(result))
#输出结果:[30, 12, 2, 0, 6, 20, 42]

2.多个可迭代对象

if __name__=='__main__':li=[1,3,5,7]lil=[2,4,6,8]result=map(lambda x,y:x+y,li,lil)print(list(result))
#输出结果:[3, 7, 11, 15]
if __name__=='__main__':li=[1,3,5,7]lil=[2,4,6]result=map(lambda x,y:x+y,li,lil)print(list(result))
#输出结果:[3, 7, 11]

这里说明一下:如果是对两个或者两个以上可迭代对象进行处理的话,是根据序列的下标一一对应处理,比如上面的例子,是按照1+2,3+4,5+6,7+8依次输出结果,但是第二个例子没有8,故无法对下标为 3 的位置进行处理,所以输出结果只有三个。

3.多个可迭代对象返回元组形式

if __name__=='__main__':li=[1,2,3,4]lil=[5,6,7,8]result=map(lambda x,y:(y,x),li,lil)print(list(result))
#输出结果:[(5, 1), (6, 2), (7, 3), (8, 4)]

4.元组与列表共同作用

if __name__=='__main__':li=[a for a in range(0,4)]tu=(b for b in range(4,8))result=map(lambda x,y:(x**2,y-5),li,tu)print(list(result))
#输出结果:[(0, -1), (1, 0), (4, 1), (9, 2)]

这里可以看出,iterable……可以是列表或者元组,只要有下标且对应的都可以进行参与运算

示例(7):math函数作为function

import math
if __name__=='__main__':li=[a for a in range(-5,4)]result=map(lambda x:round(math.sin(x),2),li) #保留两位小数print(list(result))
#输出结果:[0.96, 0.76, -0.14, -0.91, -0.84, 0.0, 0.84, 0.91, 0.14]

OK,就到这里了,我们下一期再见~

分享一张壁纸~ 

 

相关文章:

Python进阶-----高阶函数map() 简介和使用

目录 简介&#xff1a; ​编辑 示例&#xff1a; 示例&#xff08;1&#xff09;&#xff1a;输出map()函数返回值&#xff08;迭代器&#xff09;结果 示例&#xff08;2&#xff09;&#xff1a;与循环对比 示例&#xff08;3&#xff09;&#xff1a;字符串转列表 示…...

GPU会变得更便宜吗?GPU 定价更新

在英伟达和AMD发布了一段时间的一致显卡之后&#xff0c;事情在二月份已经降温。没有新的GPU可以谈论&#xff0c;没有特别惊人的交易或任何东西&#xff0c;但仍然值得看看市场现在的表现如何&#xff0c;因为它已经稳定下来&#xff0c;以及我们在未来几个月可以期待什么。过…...

IDEA如何创建一个springboot项目

要想进入springboot的殿堂&#xff0c;你的跨进springboot的门槛&#xff0c;下面就是使用IDEA初始话一个简单的springboot项目。 选择Create New Project 选择Spring Initializer——>选择对应的jdk版本——>Default默认在线构建&#xff0c;需要联网噢 选择自己想写…...

Netty核心功能以及线程模型

目录 Netty核心功能以及线程模型 Netty初探 Netty的使用场景&#xff1a; Netty通讯示例 Netty线程模型 Netty模块组件 Netty核心功能以及线程模型 Netty初探 NIO 的类库和 API 繁杂&#xff0c; 使用麻烦&#xff1a; 需要熟练掌握Selector、 ServerSocketChannel、 So…...

【并发编程二十】协程(coroutine)_协程库

【并发编程二十】协程&#xff08;coroutine&#xff09;一、线程的缺点二、协程三、优点四、个人理解五、协程库1、window系统2、unix系统&#xff08;包括linux的各个版本&#xff09;2.1、makecontext2.2、swapcontext2.3、setcontext3、第三方库3.1、Boost.Coroutine23.2、…...

c语言入门-5-字符串

c语言入门-5-字符串正文1、字符串怎么用方式一方式二2、字符串的长度深度解析1 字符串的特性2 \0 的含义3 ascii码表下一篇正文 1、字符串怎么用 方式一 // 字符串的标准使用方式&#xff0c;用char类型的数组表示字符串 #include<stdio.h> int main() {char arr[] &…...

[Ansible系列]ansible roles

目录 一. Roles简介 二. Roles基本构成 三. Role使用 3.1 playbook中引用roles 3.2 pre_tasks 和 post_tasks 3.3 role的依赖 四. Ansible Galaxy 一. Roles简介 在Ansible中&#xff0c;role是将playbook分割为多个文件的主要机制。它大大简化了复杂playbook…...

冯诺依曼体系结构与操作系统的理解

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;操作系统 &#x1f4ac;<3>前言&#xff1a;今天来介绍一下冯诺依曼体系结构&#xff0c;和操作系统的理解。 目录 1.冯诺依曼体系结构 冯诺依曼体系的工作原理&#xff1a; 为…...

API接口签名验证

文章目录一、使用背景二、实现方案三、具体流程四、优化五、代码实现六、后续优化一、使用背景 过去对于接口的验证我一般都是直接在登录时为用户发放token&#xff0c;用户在随后的操作中携带了token则允许请求。 但是这样的验证方式存在有一定的问题&#xff0c;如果token被…...

Keettle (pdi-ce) 整库多表迁移(避坑)

使用开源免费 Keettle 工具 1.下载与安装 官网地址&#xff1a;下载 下载9.3.0以上的&#xff0c;6.1、7.1我都尝试过&#xff0c;6.1导致很多莫名其妙问题&#xff0c;7.1数据库可以连接和预览&#xff0c;迁移的时候就会出现事务读问题&#xff0c;最后解决这个问题后&…...

搭建私人《我的世界》服务器,使用Cpolar内网穿透更简单

文章目录1.前言2.本地服务器搭建2.1 设置环境变量2.2 进行《我的世界》服务器端设置2.3 测试和使用3.本地MC服务器的内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置3.3.测试和使用4.结语1.前言 要说去年游戏圈的重磅大瓜&#xff0c;想必网易和暴雪的分家必能上榜。虽然两家大…...

map和set的使用

文章目录关联式容器树形结构的关联式容器setinsert增减erase删除multiset修改mappair<key,value>insertoperator[] 的引入insert和operator[]的区别multimap小结map的使用统计最喜欢吃的前几种水果前K个高频单词&#xff0c;返回单词的频率由高到低,频率相同时&#xff0…...

常用正则表达式大全

链接...

注意,摸鱼程序员常用的9个小技巧,早点下班不秃头

9个养生小技巧&#xff0c;祝大家不秃头嗨害大家好鸭&#xff01; 我是小熊猫~毕竟摸鱼一时爽&#xff0c;一直摸一直爽嘛~一、整理字符串输入二、迭代器切片&#xff08;Slice&#xff09;三、跳过可迭代对象的开头四、只包含关键字参数的函数 (kwargs)五、创建支持「with」语…...

【Linux】文件时间-ACM

文章目录文件时间-acmAccessChangeModify文件时间-acm 我们可以使用stat 文件名的方式查看对应的文件的时间信息 Access 表示文件最近一次被访问的时间 文件的访问 实际也就是文件的读取 实际操作中,文件的Access时间可能没有变化,这是因为在新的Linux内核中,Access时间不…...

[架构之路-124]-《软考-系统架构设计师》-操作系统-3-操作系统原理 - IO设备、微内核、嵌入式系统

第11章 操作系统第5节 设备管理/文件管理&#xff1a;IO5.1 文件管理5.2 IO设备管理&#xff08;内存与IO设备之间&#xff09;数据传输控制是指如何在内存和IO硬件设备之间传输数据&#xff0c;即&#xff1a;设备何时空闲&#xff1f;设备何时完成数据的传输&#xff1f;SPOO…...

【竞赛/TPU】算能TPU编程竞赛总结

如果觉得我的分享有一定帮助&#xff0c;欢迎关注我的微信公众号 “码农的科研笔记”&#xff0c;了解更多我的算法和代码学习总结记录。或者点击链接扫码关注【竞赛/TPU】算能TPU编程竞赛总结 1 基础知识 1.1【Ubuntu】 Ubuntu操作系统中有很多不同的文件夹&#xff0c;每个…...

Substrate 基础教程(Tutorials) -- 模拟网络 添加可信节点

三、模拟网络 本教程基本介绍了如何使用一个私有验证器&#xff08;validators&#xff09;的授权集合来启动私有区块链网络。 Substrate节点模板使用授权共识模型(authority consensus model)&#xff0c;该模型将块生产限制为授权帐户的旋转列表(rotating list)。授权帐户(…...

SAP 设置无物料号的费用采购

现在还是以外购电来说一下ERP中费用采购单的使用步骤&#xff1a; (1).Tcode:OMSF定义物料组D1,如下图。 (2).到配置路径IMG Path:物料管理->采购->帐户分配(或直接SE16:V_T163K)定义一科目分配类别,默认的K就是费用采购科目分配类型,如果可能可以复制一个,如下图,注意下…...

k8s ConfigMap 中 subPath 字段和 items 字段

Kubernetes中什么是subPath 有时&#xff0c;在单个 Pod 中共享卷以供多方使用是很有用的。volumeMounts.subPath 属性可用于指定所引用的卷内的子路径&#xff0c;而不是其根路径。 这句话理解了&#xff0c;基本就懂subPath怎么用了&#xff0c;比如我们要替换nginx.cnf, 挂…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践&#xff0c;很多人以为AI已经强大到不需要程序员了&#xff0c;其实不是&#xff0c;AI更加需要程序员&#xff0c;普通人…...

【技巧】dify前端源代码修改第一弹-增加tab页

回到目录 【技巧】dify前端源代码修改第一弹-增加tab页 尝试修改dify的前端源代码&#xff0c;在知识库增加一个tab页"HELLO WORLD"&#xff0c;完成后的效果如下 [gif01] 1. 前端代码进入调试模式 参考 【部署】win10的wsl环境下启动dify的web前端服务 启动调试…...