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

Python-map从基础到进阶

无论你是打打算法比赛还是做项目map函数肯定都是你必学内置函数,这篇文章小白也能轻松掌握map函数,学习map,理解map,进阶用法map

描述

map() 函数会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

语法

以下是 map() 方法的语法:

map(function, iterable, ...)

参数

  • function -- 函数
  • iterable -- 一个或多个序列

返回值

返回一个迭代器。


实例

def pow2(x):return x * x
nums = [1, 2, 3, 4, 5, 6 ,7]
print(list(map(pow2, nums)))
#map(pow2, nums))这是一个迭代器,list就相当于读取,把他读出写成列表形式#输出[1, 4, 9, 16, 25, 36, 49]

值得注意的是    map(pow2, nums))这是一个迭代器,list就相当于读取,把他读出写成列表形式

若print(map(func, iterable)) 则输出的是迭代器这个容器名称和位置参数,而不是具体的值

进阶

&split结合:

如果大家打蓝桥杯比赛这个就很有生活了。

比如让你按照要求输入:

输入格式

输入的第一行包含两个正整数 n,m ,用一个空格分隔,其中 n 表示人数,m 表示每一个人有m个初始属性值。

接下来 n 行,每行包含m个非负整数 1...i....m,相邻整数之间使用一个空格分隔,每一个整数表示相应位置的属性初始值

4 4
1 2 3 4
4 5 6 7
9 8 7 4
4 5 6 7

如果遇到这种情况,如果你第一次写肯定十分迷糊,但是只要记住这样的格式就轻而易举了

首先回顾一下map的作用是讲后面的 iterable 每一项都执行 function 操作,split(‘@’)表示以 @ 分割可迭代的数据, 如果split()就是指以空格为分割器分隔, 为什么map里是int,因为所有输入的都是字符串或者字符,而我们要得到整数类型的数据,所以要用int,你可以联想一下  

n = int(input())

n, m = map(int, input().split())nums = []
for q in range(n):nums.append([])nums[-1] = list(map(int, input().split()))

当然对于第二行开始的数据还有一种十分简便的写法:

nums = [list(map(int, input().split())) for q in range(n)]

记住Python本身就是十分简单的代码,就要利用这个简洁的特性,否者为什么不用C ++ 毕竟C ++跑的更快。

&初始化工具

在一些题目中往往需要对字符串初始化,就是只要需要初始化,map绝对是十分高效的工具,

例如:

在   ‘abcdefghijkdsidwidjkdjwidndskjd’ 中找到最长的连续的子字符串,连续就是指ab, za, cd abcd这种子字符串,子字符串是指连续的,例如本例子中最长连续子字符串是abcdefghijk 

那么在计算机中我们如何判断是否连续呢,当然是判断其Unicode 如'a' 对应的是97,‘b’对应的是98,只要相邻相差1,值得注意的是(ord(a[i]) – ord(a[i-1])) % 26 == 1对于'za'这种特殊连续的情况仍然能够正确判断

a = 'abcdefghijkdjisdisdwdmsdwdkjsdw'
ans, cnt = 0, 1
for i in range(1, len(a)):if (ord(a[i]) – ord(a[i-1])) % 26 == 1:cnt += 1else:ans = max(ans, cnt)cnt =  1
print(ans)

从上面不难看出每一次都需要在for中单独判断不如直接一开始就初始化,

a = 'abcdefghijkdjisdisdwdmsdwdkjsdw'
a = list(map(ord, a))
ans, cnt = 0, 1
for i in range(1, len(a)):if (a[i] - a[i - 1]) % 26 == 1:cnt += 1else:ans = max(ans, cnt)cnt =  1
print(ans)

因此map一个十分重要的运用就是初始化工具

谢谢你看到这里,期待与你共同进步!

http://www.xdnf.cn/news/312931.html

相关文章:

  • SpringBoot Starter简介-笔记
  • https://juejin.cn/editor/drafts/7262346366541070395
  • RNN 与 CNN:深度学习中的两大经典模型技术解析
  • [HOT 100] 2646. 最小化旅行的价格总和
  • C语言| 递归实现斐波那契数列
  • 基站综合测试仪核心功能详解:从射频参数到5G协议测试实战指南
  • day008-文件属性专题
  • 爱普生VG7050EFN压控晶振在小基站的应用优势
  • linux -shell原理与运用
  • 人工智能任务24-AI学习中的模型训练中稀疏化参数与稀疏损失函数,以及实战项目应用
  • TruPlasma Match匹配器软件通快霍廷格TruPlasma Match100613 (G2)1024/13 (G2) RF Matchbox
  • 功率因数校正(PFC):原理、调节及关键波形分析
  • 大学之大:伯明翰大学2025.5.6
  • 一周学会Pandas2 Python数据处理与分析-Pandas2数据类型转换操作
  • langchain4j接入ollama本地大模型
  • 深入理解分布式锁——以Redis为例
  • APP自动化测试(一)
  • 《让内容“活”起来:Flutter社交应用瀑布流布局的破界实践》
  • 信息论06:信息增益——量化不确定性的艺术与科学
  • 深度学习:图神经网络GNN、GCN及其在推荐系统的应用
  • MUX-vlan
  • 设备与驱动:I/O设备模型
  • Selenium模拟人类行为,操作网页的方法(全)
  • 简单面试提问
  • LIO-Livox
  • 攻防世界 反应釜开关控制
  • 室内烟雾明火检测数据集VOC+YOLO格式2469张2类别
  • 【JEECG】BasicTable单元格编辑,插槽添加下拉组件样式错位
  • 模板模式 VS 建造者模式
  • SQL报错注入