全国咨询热线:400-618-9090

首页技术文章正文

python中map函数的用法[python学习]

创建时间:2019-10-31 15:21:58.0 来源:黑马程序员

Python提供了很多能实现各种功能的内置函数。内置函数,就是在python中被自动加载的函数,任何时候都可以使用。下面我们介绍map函数的用法和作用。

map函数会根据提供的函数对指定的序列做映射。map函数的定义如下:


map(function, iterable, …)


在上述定义中,第一个参数function表示的是一个函数名,第二个参数iterable可以是序列、支持选代的容器或选代器。当调用map函数时,iterable中的每个元素都会调用function函数,所有元素调用function函数返回的结果会保存到一个迭代器对象中。

 

这里说明一下,在Python2中,map函数的返回值是列表list类型如果希望将选代器对象转为列表,则可以通过list函数进行转换。此外,还可以使用for循环直接遍历迭代器对象,从而取出其内部的每个元素。示例代码如下:【推荐了解:python+人工智能课程

 

func = lambda  x:x+2

result = map(func, [1, 2, 3, 4, 5]

print(list(ruslt))

 

上述示例中,定义了一个匿名函数func,返回某个数加2以后的结果,接着调用map函数将

[1,2,3,4,5]中的每个元素取出来,作为func的参数调用func函数,之后将结果转换为列表的形式显示。

程序输出的结果为:

[3, 4, 5, 6, 7]

1572506259042_map-函数.jpg



如果map函数中传入的 unction函数带有两个参数,那么map函数需要传递两个序列例代码如下。

Result  =  map (lambda  x, y: x+y, [1, 2, 3], [4,5,6])

print (list (result))

# 结果为

[5, 7, 9]

 

在 Python3以前,如果调用map函数时传入的 function参数为None,则相当于将序列中

对应位置的元素合并成为元组。示例(Phon2.7)代码如下:


Result = map(None, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

print result

# 输出结果

[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]


如果两个序列的元素个数不一致,那么元素少的序列会以None补齐。示例(Python 2.7)代码如下:

result = map(None, [1, 3, 5, 7, 9], [2, 4, 6])

print result

#结果为

[(1, 2), (3, 4), (5, 6), (7, None), (9, None)]


在 Python3以后,当map传入的函数为None时,就等同于zip函数(用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表)的功能,并且已经zip函数取代了。另外,map函数无法处理两个序列长度不一致、对应位置操作类型不一致,它们都会报错类型错误。【小福利:python入门教程下载


本文来自:黑马程序员 www.itheima.com

 

在线咨询 我要报名