python函数:map()

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/chenhyc/article/details/102710668

(1)map()函数:是python内置函数,主要作用是:接收一个“函数”和一个序列(list),对序列(list)中的元素,依次调用“函数”计算,并返回一个新的序列(list)

(2)map() 函数语法:
map(function,iterable, …)
参数
function – 函数
iterable – 一个或多个序列

(备注:python 3.0中的map()函数返回的是iterators,无法像python2.x直接返回一个list,因此需加上一个list.index,转换成list)

案例说明:

x = [1,2,3,4,5,6,7]
y = [1,2,3,4,5,6,7]
'''lambda定义x和y的函数公式为:x+y,并通过map将列表x和y依次
传给lambda定义的函数:x+y,执行相加操作'''
z = map(lambda x,y:x+y,x,y)
 #因为python3.0,map()函数返回的是iterators,非list列表
print('直接输出map为:',z,'\n') 

 #为了能输出list,需要将map转换成list类型
print('map转换成list后输出为:',list(z)) 

在这里插入图片描述
备注:如果传入的列表x和y长度不一致,按照最小的元素个数计算:
在这里插入图片描述

案例说明2:

def sum(x):            #自定义一个函数:x*2
	return x*2
	
y = map(sum,[1,2,3])  #将序列[1,2,3],按照顺序依次传给函数sum(),执行x*2

print(list(y))  #输出相乘后的list

在这里插入图片描述

案例三:

def sum(x,y):            #自定义一个函数:x+y
	return x+y

list_x = [1,2,3,4,5]
list_y = [6,7,8,9,0]
	
list_z = map(sum,list_x,list_y)  #将参数list_x,list_y,按照顺序依次传给函数sum(),执行x*2

print(list(list_z))  #输出相乘后的list

在这里插入图片描述
案例四:
关于元素为“字典”组成的序列list说明:
例如:
user = [
{‘name’:‘xuab’,‘password’:‘123’,‘usertype’:1},
{‘name’:‘hyc’,‘password’:‘1314’,‘usertype’:2},
{‘name’:‘yq’,‘password’:‘520’,‘usertype’:3},
{‘name’:‘lcz’,‘password’:‘1314520’,‘usertype’:4},
{‘name’:‘yqq’,‘password’:‘520’,‘usertype’:5}
]

user列表是有5个单独的“字典"组成的列表,一个字典组,是一个序列元素(例如list = [1,2,3,4,5],这个列表中,1是一个元素,而由字典组成的列表,则整个字典:{‘name’:‘xuab’,‘password’:‘123’,‘usertype’:1},是一个列表元素)

解答:因为每个字典的key名称都一样,所有获取内嵌字典中的key,可以通过list[key]来获取,但是因为这个是字典组组成的列表,无法直接通过user[name]获取name的值,因此需要用到map和lambda函数组合获取

user_name_list = list(map(lambda name: name['name'],user))  
'''
lambda name:name['name'],作用是自定义隐藏函数:name['name'],
参数name,['name']是字典中的键:name

map,作用是:接收一个“函数:name['name']”和一个序列(user),
对序列(user)中的元素(这里是内嵌字典序列,一个字典是一个元素),
依次调用“name['name']”计算,并返回一个新的序列(list)'''

print(user_name_list)

在这里插入图片描述

简单的案例说明:

猜你喜欢

转载自blog.csdn.net/chenhyc/article/details/102710668