全国咨询/投诉热线:400-618-4000

python函数map 怎么用?[python学习]

更新时间:2019年10月31日15时35分 来源:传智播客 浏览次数:

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

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

map(function, iterable, …)

 
在上述定义中,第一个参数function表示的是一个函数名,第二个参数iterable可以是序列、支持选代的容器或选代器。当调用map函数时,iterable中的每个元素都会调用function函数,所有元素调用function函数返回的结果会保存到一个迭代器对象中。【推荐了解:python+人工智能课程
 
这里说明一下,在Python2中,map函数的返回值是列表list类型如果希望将选代器对象转为列表,则可以通过list函数进行转换。此外,还可以使用for循环直接遍历迭代器对象,从而取出其内部的每个元素。示例代码如下:
 
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]

 
如果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)代码如下: 【插播福利:传智播客2019python教程全集

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+人工智能学院 python.itcast.cn

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额