详解Python map函数及Python map()函数的用法

 更新时间:2017年11月16日 08:48:08   投稿:mrr  
map() 会根据提供的函数对指定序列做映射。下面通过本文给大家介绍Python map函数及Python map()函数的用法,需要的朋友参考下吧

python map函数

map()函数
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9]
如果希望把list的每个元素都作平方,就可以用map()函数:
因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算:
def f(x):
 return x*x
print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
输出结果:
[1, 4, 9, 10, 25, 36, 49, 64, 81]
注意:map()函数不改变原有的 list,而是返回一个新的 list。
利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。
由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。
任务
假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list:
输入:['adam', 'LISA', 'barT']
输出:['Adam', 'Lisa', 'Bart']
def format_name(s):
 s1=s[0:1].upper()+s[1:].lower();
 return s1;
print map(format_name, ['adam', 'LISA', 'barT'])

map()函数是python内置的高阶函数,对传入的list的每一个元素进行映射,返回一个新的映射之后的list

Python map()函数的用法

Python函数式编程之map()

Python中map()、filter()、reduce()这三个都是应用于序列的内置函数。

格式:

map(func, seq1[, seq2,…])

第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。

Python函数编程中的map()函数是将func作用于seq中的每一个元素,并将所有的调用的结果作为一个list返回。如果func为None,作用同zip()。

1、当seq只有一个时,将函数func作用于这个seq的每个元素上,并得到一个新的seq。

让我们来看一下只有一个seq的时候,map()函数是如何工作的。

work 

从上图可以看出,函数func函数会作用于seq中的每个元素,得到func(seq[n])组成的列表。下面举得例子来帮助我们更好的理解这个工作过程。

#使用lambda
>>> print map(lambda x: x % 2, range(7))
[0, 1, 0, 1, 0, 1, 0]

3

#使用列表解析
>>> print [x % 2 for x in range(7)]
[0, 1, 0, 1, 0, 1, 0]

4 

一个seq时,可以使用filter()函数代替,那什么情况不能代替呢?

2、当seq多于一个时,map可以并行(注意是并行)地对每个seq执行如下图所示的过程:

2 

从图可以看出,每个seq的同一位置的元素同时传入一个多元的func函数之后,得到一个返回值,并将这个返回值存放在一个列表中。下面我们看一个有多个seq的例子:

>>> print map(lambda x , y : x ** y, [2,4,6],[3,2,1])
[8, 16, 6]

5 

如果上面我们不使用map函数,就只能使用for循环,依次对每个位置的元素调用该函数去执行。还可以使返回值是一个元组。如:

>>> print map(lambda x , y : (x ** y, x + y), [2,4,6],[3,2,1])
[(8, 5), (16, 6), (6, 7)]

7 

当func函数时None时,这就同zip()函数了,并且zip()开始取代这个了,目的是将多个列表相同位置的元素归并到一个元组。如:

>>> print map(None, [2,4,6],[3,2,1])
[(2, 3), (4, 2), (6, 1)]

需要注意的是:

map无法处理seq长度不一致、对应位置操作数类型不一致的情况,这两种情况都会报类型错误。如下图:

8

3、使用map()函数可以实现将其他类型的数转换成list,但是这种转换也是有类型限制的,具体什么类型限制,在以后的学习中慢慢摸索吧。这里给出几个能转换的例子:

***将元组转换成list***
>>> map(int, (1,2,3))
[1, 2, 3]
***将字符串转换成list***
>>> map(int, '1234')
[1, 2, 3, 4]
***提取字典的key,并将结果存放在一个list中***
>>> map(int, {1:2,2:3,3:4})
[1, 2, 3]
***字符串转换成元组,并将结果以列表的形式返回***
>>> map(tuple, 'agdf')
[('a',), ('g',), ('d',), ('f',)]
#将小写转成大写
def u_to_l (s):
 return s.upper()
print map(u_to_l,'asdfd')

总结

以上所述是小编给大家介绍的详解Python map函数及Python map()函数的用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Python Matplotlib基本用法详解

    Python Matplotlib基本用法详解

    Matplotlib 是Python中类似 MATLAB 的绘图工具,熟悉 MATLAB 也可以很快的上手 Matplotlib,这篇文章主要介绍了Python Matplotlib基本用法,需要的朋友可以参考下
    2023-03-03
  • 基于python进行抽样分布描述及实践详解

    基于python进行抽样分布描述及实践详解

    这篇文章主要介绍了基于python进行抽样分布描述及实践详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • tensorflow常用函数API介绍

    tensorflow常用函数API介绍

    这篇文章主要介绍了tensorflow常用函数API介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 使用python爬取微博数据打造一颗“心”

    使用python爬取微博数据打造一颗“心”

    这篇文章主要介绍了使用python基于微博数据打造一颗“心”,作为程序员,我准备了一份特别的礼物,用以往发的微博数据打造一颗“爱心”,我想她一定会感动得哭了吧,需要的朋友可以参考下
    2019-06-06
  • 掌握python polars库进行高效高速的数据处理。

    掌握python polars库进行高效高速的数据处理。

    这篇文章主要介绍了python polars库进行高效高速的数据处理技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 二十种Python代码游戏源代码分享

    二十种Python代码游戏源代码分享

    这篇文章主要介绍了二十种Python代码游戏源代码分享,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • PyQt5之如何设置QWidget窗口背景图片问题

    PyQt5之如何设置QWidget窗口背景图片问题

    这篇文章主要介绍了PyQt5之如何设置QWidget窗口背景图片问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • pytorch教程之网络的构建流程笔记

    pytorch教程之网络的构建流程笔记

    这篇文章主要介绍了pytorch教程中网络的构建流程,文中附含了详细的示例代码流程,有需要的朋友可以借鉴参考下,希望可以有所帮助
    2021-09-09
  • Python3 串口接收与发送16进制数据包的实例

    Python3 串口接收与发送16进制数据包的实例

    今天小编就为大家分享一篇Python3 串口接收与发送16进制数据包的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 详解python中的Turtle函数库

    详解python中的Turtle函数库

    这篇文章主要介绍了python中的Turtle函数库,包括函数库的引用方式,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11

最新评论