当前位置: 首页 > 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一个十分重要的运用就是初始化工具

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

相关文章:

  • 42 python http之urllib库
  • Vue 自定义指令输入校验过滤
  • 【前缀和】矩阵区域和
  • Hadoop架构再探讨
  • 【MongoDB篇】MongoDB的聚合框架!
  • python刷题笔记:三目运算符的写法
  • 高等数学第五章---定积分(§5.1定积分的概念、性质和应用)
  • 【HFP】蓝牙语音通信高级功能解析:快速拨号与呼叫等待协议实现
  • 【日撸 Java 三百行】Day 4(条件语句实战——闰年问题)
  • ORACLE EBS 12.1 启用https 简单策略
  • STM32H743单片机实现ADC+DMA多通道检测+事件组
  • nut-list和nut-swipe搭配:nut-cell侧滑定义无法冒泡打开及bug(含代码、案例、截图)
  • 继电器负载知识
  • 内存的位运算
  • Dify - Stable Diffusion
  • 未来设计新篇章!2025 年 UX/UI 设计趋势,技术与体验的全新结合!
  • 基于Jetson Nano与PyTorch的无人机实时目标跟踪系统搭建指南
  • 通过CIDR推出子网掩码和广播地址等
  • 【quantity】1 SI Prefixes 实现解析(prefix.rs)
  • 网络的搭建
  • 央行:将支持资本市场两项货币政策工具的额度合并使用
  • 云南一男子酒后经常殴打七旬母亲,被警方拘14日罚600元
  • 上海市委政法委召开会议传达学习总书记重要讲话精神
  • 五一多城楼市火热:北京新房网签量同比翻倍,上海热门楼盘认购接连触发积分
  • “穿越看洪武”,明太祖及其皇后像台北故宫博物院南园展出
  • 从“土”到“潮”,唢呐何以“圈粉”年轻人