粉丝服务

map函数的用法python

Python中map函数用来根据提供的函数(通过参数提供)对指定序列做映射。本质上来讲,map函数在Python中是一个迭代器生成函数。本文详解map函数的使用方法。

\'\'

map函数的语法

map(function, iterable)

参数解释如下:

function:一个函数或方法iterable:一个或多个序列(可迭代对象)函数的作用是:对序列iterable中每一个元素调用function函数,返回一个map对象实例。这个map对象本质上来讲是一个迭代器。

\'\'

分析源代码如下:

\'\'

这个类的内部实现了__iter__()、__next__()方法。下面详解其用法:

map函数使用匿名函数作为参数

传入map函数中的参数function可以是一个匿名函数。

print([i for i in map(lambda x: x * 2, [1, 2, 3, 4, 5])])运行结果如下

[2, 4, 6, 8]一般情况下,function最好有名字哦!

map函数的参数为一个简单的函数(该函数只有一个参数)

此时,map函数需要提供一个序列和一个函数。举例如下:

定义一个序列和一个函数

lst = [\'a\', 2, \'b\', 4, \'c\', 6, \'d\', 8, \'e\', 10]def sq(x):# 数值加倍,字符串重复 return x * 2使用map函数,将函数sq作用于序列lst中每一个元素,生成一个map对象。

m = map(sq, lst)打印结果

print(f\'map函数返回对象类型:{type(m)}\')print(print([i for i in m]))程序运行效果如下:

map函数返回对象类型:<class \'map\'>[\'aa\', 4, \'bb\', 8, \'cc\', 12, \'dd\', 16, \'ee\', 20]运行效果如图所示:

\'\'

传入一个多参数的函数效果如何呢?

map函数的参数为一个复杂函数(该函数有2个或以上的参数)

此时,我们根据参数function中参数的位置,依次在map函数中提供相应的序列,序列的个数依function的参数个数而定。

我们定义两个序列:

lst1 = [\'a\', \'b\', \'c\', \'d\', \'e\']lst2 = [1, 2, 3, 4, 5]定义一个两个参数的函数

def sq(x, y):# 数值加倍,字符串重复 return x * y使用map函数

m = map(sq, lst1, lst2)print([i for i in m])运行效果如下:

[\'a\', \'bb\', \'ccc\', \'dddd\', \'eeeee\']这个很好理解,函数需要几个参数,这几个参数就需要相应的序列提供。

但是,当提供的这些序列的长度不相等(使用len函数)时,map如何处理呢?

\'\'

根据示例,当传入map函数中序列长度不等时,程序并不会报错。此时,map函数依据个数最小的序列确定返回的map对象实例的长度。

\'\'

map函数中,function参数为多个时,参照上述2个参数的机制运行。

好了,map函数的用法就是这样了,小伙伴们掌握了吗?

本栏目精选

热门推荐

频道导航