1.map函数语法及介绍:
map函数时Python的内置函数,根据指定的功能函数对参数序列做指定功能的映射。
其语法格式为:
map(func,iterable1[,iterable2....])
第一个参数func是接收一个函数名,对其后接收的一个或多个可迭代参数做该函数处理,其返回的结果是一个map对象或者说是迭代器(iterator)。其接收的函数可以是Python内置函数也可以是用户自定义的函数。
注意:
1.在看其他博主的博客时候发现有的博客说的是返回一个列表,在Python2.X版本中是直接返回一个映射后的列表,Python3.X中map函数的返回值是一个属于map类的对象或者说是一个迭代器,想要得到列表、元组、字典等需要用相应的函数进行进一步转换。
2.返回值是迭代器,但是返回的结果只能迭代一次
,如果需要多次使用注意提前保存结果并处理。
如:
>>>a=(1,2,3)
c=map(int,a)
print(c)
#其运行结果如下,返回的是一个map对象/迭代器
<map object at 0x000001F8783A53C8>
[Finished in 0.2s]
2.具体应用:
- 返回的迭代器只能迭代一次
def func(x): #用户自定义函数做map的第一个参数
return x*10
a=map(func,range(0,5))
print(list(a))
print(list(a)) #map返回的迭代器只能够迭代一次
b=list(map(func,range(0,5))) #将map返回的迭代器转列表后保存在变量b中后可多次调用
print(b)
print(b)
#上述代码执行结果为:
[0, 10, 20, 30, 40]
[]
[0, 10, 20, 30, 40]
[0, 10, 20, 30, 40]
可以很清楚的理解map函数及其返回值的特性
- func可以是匿名函数lambda
>>>x=list(map(lambda x,y:x+y,[1,1,1],[1,2,3]))#匿名函数lambda的参数是两个因此map接受的参数对象也应该是两个
print(x)
[2,3,4]
- 当map接收的func是None时,map函数相当于zip()函数
>>>print(map(None,[1,1,1],[1,2,3]))
[(1,1),(1,2),(1,3)]
#效果和zip函数等同
- map函数可以配合int、list等函数实现类型变换
注:工作效率
列表推导式>map函数映射>for循环
读者可用此三种方法向列表中存入一万个、一百万个、一千万个数据比对其工作效率。