首页 > 其他分享 >map

map

时间:2024-03-03 17:13:27浏览次数:20  
标签:map 迭代 dic lst print new

map

map(func,iterable) 是一个功能性函数,用于处理数据。它把 iterable 中的数据一个一个拿出来,扔到 func 做处理,并通过调用迭代器来获取返回值。

参数:

  • func : 函数(内置函数或自定义函数)
  • iterable : 可迭代对象(容器类型数据,range对象,迭代器)

返回值:

  • 迭代器

示例

把列表中的元素都变成整型

lst = ["1","2","3","4"]
lst_new = []
for i in lst:
	lst_new.append(int(i))
print(lst_new)

使用 map 改写:

it = map(int,lst)
print(isinstance(it,Iterator))

调用迭代器 next

print(next(it))
print(next(it))
print(next(it))
print(next(it))


"""
代码解析:
	第一次调用迭代器
		先把列表中的第一个元素"1"拿出来扔到int中做强转,变成整型1返回出来
	第二次调用迭代器
		先把列表中的第一个元素"2"拿出来扔到int中做强转,变成整型2返回出来
	第三次调用迭代器
		先把列表中的第一个元素"3"拿出来扔到int中做强转,变成整型3返回出来
	第四次调用迭代器
		先把列表中的第一个元素"4"拿出来扔到int中做强转,变成整型4返回出来
"""

调用迭代器 for

it = map(int,lst)
for i in it:
	print(i)

调用迭代器 for + next

print("<======>")
it = map(int,lst)
for i in range(3):
	print(next(it))

强转迭代器 => 列表:

it = map(int,lst)
print(list(it))

[1,2,3,4] => [2,8,24,64]

lst = [1,2,3,4]
lst_new = []
for i in lst:
	lst_new.append(i << i)
print(lst_new)

使用 map 改写:

def func(n):
	return n << n
	
it = map(func,lst)
print(list(it))

字典翻转

#已知 dic = {97:"a",98:"b",99:"c"}  得到 ["a","b","c"]
dic = {97:"a",98:"b",99:"c"}
dic_new = {}
for k,v in dic.items(): #字典翻转处理
	dic_new[v] = k

lst = ["a","b","c"]
lst_new = []
for i in lst:
	lst_new.append(dic_new[i])
print(lst_new)

使用 map 改写:

lst = ["a","b","c"]
def func(n):
	dic = {97: "a", 98: "b", 99: "c"}
	dic_new = {}
	for k, v in dic.items():
		dic_new[v] = k
	return dic_new[n]

it = map(func, lst)
print(list(it))

标签:map,迭代,dic,lst,print,new
From: https://www.cnblogs.com/wbcde116/p/18050298

相关文章

  • 多线程限流工具类-Semaphore
    Semaphore介绍Semaphore(信号量)是JAVA多线程中的一个工具类,它可以通过指定参数来控制执行线程数量,一般用于限流访问某个资源时使用。Semaphore使用示例需求场景:用一个核心线程数为6,最大线程数为20的线程池执行任务,但是要求最多只能同时运行3个线程代码:publicclassdemo{......
  • Halcon HObject和C#的Bitmap图像互转
    转载:https://blog.51cto.com/u_15088375/3247784#:~:text=HalconHObject和C%23的Bitmap图像互转1HalconHObject和C%23的Bitmap图像互转2一,Bitmap转HObject3方法一:HOperatorSet.GenImageInterleaved直接转换4方法二:C%23获取图像各个通道内存首地址和HOperatorSet.GenIma......
  • 关于HashMap遍历的四种方式,以及为什么要用entry
    1.问题如何遍历HashMap,以及其中一种遍历方式中,我们为何需要先转为Map.Entry后,再遍历Map呢?而且是比较推荐的方式?2.解决参考:关于HashMap遍历,为什么要用entryHashMap中推荐使用entrySet方式遍历Map类集合KV而不是keySet方式遍历2.1为何使用Map.Entry阅读《阿里巴巴Java开发手......
  • 为什么HashMap的键值可以为null,而ConcurrentHashMap不行?
    写在开头昨天在写《HashMap很美好,但线程不安全怎么办?ConcurrentHashMap告诉你答案!》这篇文章的时候,漏了一个知识点,直到晚上吃饭的时候才突然想到,关于ConcurrentHashMap在存储Key与Value的时候,是否可以存null的问题,按理说这是一个小问题,但build哥却不敢忽视,尤其在现在很多面试官都......
  • MapBox信息补填
    Mapbox目前仍然不允许国内用户注册(但可以登录使用,奇怪了),近期已注册的账号也让补充一些信息,很多人不知道怎么填写,为源GIS来帮您详细讲解说明一下。问题描述2024年Mapbox官网注册账号发生一些变化,注册时需要填写账号的类别是个人使用还是商业用途。以前注册过的账号,登录时,强制要......
  • 【Mybatis】【三】源码分析- MapperFactoryBean 的创建过程以及 Mapper 接口代理的生
    1 前言本节我们续前两节(调试查看Mapper接口生成过程、源码分析Mapper生成注入入口分析)的内容,看下MapperFactoryBean是如何代理掉我们的@Mapper接口的。上节我们看到我们的Mapper接口的BeanDefinition,已经放进spring的上下文中了,也就是在BeanFactory的BeanDefin......
  • HashMap很美好,但线程不安全怎么办?ConcurrentHashMap告诉你答案!
    写在开头在《耗时2天,写完HashMap》这篇文章中,我们提到关于HashMap线程不安全的问题,主要存在如下3点风险:风险1:put的时候导致元素丢失;如两个线程同时put,且key值相同的情况下,后一个线程put操作覆盖了前一个线程的操作,导致前一个线程的元素丢失。风险2:put和get并发时会导致g......
  • Tomcat学习路线roadmap和个人入门知识摘录
    Tomcat学习路线roadmap和个人入门知识摘录roadmap参考《TOMCAT与JAVAWEB开发技术详解第3版》,内容非常非常详细,初期入门并不需要学习到那么详细,后面精进学习可按图索骥,或者有需要再看看就行第1章Web运作原理探析读者不妨带着以下问题去阅读本章开头的内容:●在整个......
  • Tomcat学习路线roadmap和个人入门知识摘录
    Tomcat学习路线roadmap和个人入门知识摘录roadmap参考《TOMCAT与JAVAWEB开发技术详解第3版》,内容非常非常详细,初期入门并不需要学习到那么详细,后面精进学习可按图索骥,或者有需要再看看就行第1章Web运作原理探析读者不妨带着以下问题去阅读本章开头的内容:●在整个......
  • Tomcat学习路线roadmap和个人入门知识摘录
    Tomcat学习路线roadmap和个人入门知识摘录roadmap参考《TOMCAT与JAVAWEB开发技术详解第3版》,内容非常非常详细,初期入门并不需要学习到那么详细,后面精进学习可按图索骥,或者有需要再看看就行第1章Web运作原理探析读者不妨带着以下问题去阅读本章开头的内容:●在整个......