zoukankan      html  css  js  c++  java
  • map函数

    描述

    map() 会根据提供的函数对指定序列做映射。

    第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

    语法

    map() 函数语法:

    map(function, iterable, ...)

    参数

    • function -- 函数
    • iterable -- 一个或多个序列

    实例

    >>>def square(x) :            # 计算平方数
    ...     return x ** 2
    ... 
    >>> map(square, [1,2,3,4,5])   # 计算列表各个元素的平方
    [1, 4, 9, 16, 25]
    >>> map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数
    [1, 4, 9, 16, 25]
     
    # 提供了两个列表,对相同位置的列表数据进行相加
    >>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
    [3, 7, 11, 15, 19]

    上面是一些基础用法,还有更骚的操作

    number_str = ['1', '2', '3', '4']
    output = [int(e) for e in number_str]
    output2 = list(map(int, number_str))
    print(number_str)
    print(output)
    print(output2)

    也可以结合自定义函数使用

    ***将元组转换成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')
    

      

    1、对可迭代函数'iterable'中的每一个元素应用‘function’方法,将结果作为list返回。
    来个例子:
    >>> def add100(x):
    ...     return x+100
    ...
    >>> hh = [11,22,33]
    >>> map(add100,hh)
    [111, 122, 133]
    就像文档中说的:对hh中的元素做了add100,返回了结果的list。
    
    2、如果给出了额外的可迭代参数,则对每个可迭代参数中的元素‘并行’的应用‘function’。(翻译的不好,这里的关键是‘并行’)
    >>> def abc(a, b, c):
    ...     return a*10000 + b*100 + c
    ...
    >>> list1 = [11,22,33]
    >>> list2 = [44,55,66]
    >>> list3 = [77,88,99]
    >>> map(abc,list1,list2,list3)
    [114477, 225588, 336699]
    看到并行的效果了吧!在每个list中,取出了下标相同的元素,执行了abc()。
    
    3、如果'function'给出的是‘None’,自动假定一个‘identity’函数(这个‘identity’不知道怎么解释,看例子吧)
    >>> list1 = [11,22,33]
    >>> map(None,list1)
    [11, 22, 33]
    >>> list1 = [11,22,33]
    >>> list2 = [44,55,66]
    >>> list3 = [77,88,99]
    >>> map(None,list1,list2,list3)
    [(11, 44, 77), (22, 55, 88), (33, 66, 99)]

      

    
    
  • 相关阅读:
    JVM
    事务
    Spring中AutowireMode(自动装配模型)
    ImportAware应用
    spring中几个比较重要的扩展点
    动态代理在Spring中的应用
    基于ImportSelector模拟简单的Aop
    正则表达式分组(Grouping)
    正则表达式断言(Assertions)
    一个JSON解析器
  • 原文地址:https://www.cnblogs.com/cuc-lyp/p/13041131.html
Copyright © 2011-2022 走看看