zoukankan      html  css  js  c++  java
  • map()

    • Python函数式编程之map()
    • 格式
    1 map(func, seq1[, seq2,…]) 

    第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。 
    Python函数编程中的map()函数是将func作用于seq中的每一个元素,并将所有的调用的结果作为一个list返回。如果func为None,作用同zip()。

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

    work
    函数func函数会作用于seq中的每个元素,得到func(seq[n])组成的列表。

    • 实例
    #使用lambda
    >>> print map(lambda x: x % 2, range(7))
    [0, 1, 0, 1, 0, 1, 0]
    #使用列表解析
    >>> print [x % 2 for x in range(7)]
    [0, 1, 0, 1, 0, 1, 0] 

    一个seq时,可以使用filter()函数代替。

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

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

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

            还可以使返回值是一个元组。

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

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

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

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

            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')
    复制代码
    正是江南好风景
  • 相关阅读:
    C#之泛型
    etcd 使用: golang 例子
    九卷读书:《高效能人士的7个习惯》脑图
    Go package(2) strings 用法
    技术管理:技术管理者的多维度能力及成长路径
    gin框架教程:代码系列demo地址
    五大常见的MySQL高可用方案
    gin框架教程三:JWT的使用
    九卷读书:商业模式画布
    Go package(1) time 用法
  • 原文地址:https://www.cnblogs.com/monsterhy123/p/12570890.html
Copyright © 2011-2022 走看看