• python map 详解


    python中的map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

    示例一:   

    有一个list, L = [1,2,3,4,5,6,7,8],我们要将f(x)=x^2作用于这个list上,那么我们可以使用map函数处理。
     
    >>> L = [1,2,3,4,]
    >>> def pow2(x):
    ... return x*x
    >>> map(pow2,L)
    [1, 4, 9, 16] 
    如果给出了额外的可迭代参数,则对每个可迭代参数中的元素同时的应用‘function’。
    >>> def mknum(a,b,c):
    ...     return a*10000+b*100+c
    ... 
    >>> l1 = [10,20,30]
    >>> l2 = [40,50,60]
    >>> l3 = [70,80,90]
    >>> map(mknum,l1,l2,l3)
    [104070, 205080, 306090]
      结果表明,map函数对每个list取相同的下标做了mknum函数处理。
    

    示例二:利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam’, ‘LISA’, ‘barT’],输出:[‘Adam’, ‘Lisa’,‘Bart’]。

     #!/usr/bin/env python
        def chname(name):
         n = 0
        for a in name:
            if n==0:
                cname = a.upper()
            else:
                cname = cname + a.lower()
            n = n+1
        return cname
        print map(chname,['bob','jeAN','jessica'])

     示例三:

    >>> 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()。
    

     示例四:

    >>> 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)]
    

     示例五:

      

    >>> def add100(x):
    ...     return x + 100
    ... 
    >>> list1 = [11,22,33]
    >>> map(add100,list1)
    [101, 102, 103]
    
    >>> [add100(i) for i in list1]
    [101, 102, 103]
    

     示例六:

      

    >>> 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]
    
  • 相关阅读:
    jdk和jre是什么?都有什么用?(转帖)
    滚动栏范围位置函数(SetScrollRange、SetScrollPos、GetScrollRange、GetScrollPos)
    C#异步调用
    编译hadoop2.2.0源码时报错
    项目中登陆页面的显示
    VB读写Excel
    C socket demo
    java设计模式----单例模式
    poj3358数论(欧拉定理)
    Java实现 蓝桥杯VIP 算法训练 排列问题
  • 原文地址:https://www.cnblogs.com/xuchunlin/p/6045287.html
Copyright © 2020-2023  润新知