• Python中map函数


    1.简介

    python 提供内置函数map(), 接收两个参数,一个是函数,一个是序列,
    map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返
    回。

    例如:

    (1)对于list [1, 2, 3, 4, 5, 6, 7, 8, 9]
    如果希望把list的每个元素都作平方,就可以用map()函数:
    因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算:

    def f(x):
        return x * x
    print(list(map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])))
    

    输出结果:
    [1, 4, 9, 10, 25, 36, 49, 64, 81]

    也可以结合lambda这样写:

    print map(lambda x: x**2, list)
    

    注意:map()函数不改变原有的 list,而是返回一个新的 list。

    (2)list中字符串转换成int

    list2 = ['1', '2', '3', '4', '5']
    print(list(map(lambda x:int (x), list2)))
    

    输出结果:

    [1, 2, 3, 4, 5]

    利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。
    由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。

    2.注意(Python3中map函数的问题):

    在Python2中map函数会返回一个list列表,如代码:

    >>> def f(x, y): return (x, y)  
    
    >>> l1 = [ 0, 1, 2, 3, 4, 5, 6 ]  
    
    >>> l2 = [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ] 
    

    返回结果如下:

    >>> map(f, l1, l2)  
    
    [(0, 'Sun'), (1, 'Mon'), (2, 'Tue'), (3, 'Wed'), (4, 'Thu'), (5, 'Fri'), (6, 'Sat')]
    

     但是,在Python3中返回结果如下:

    >>> map(f1, l1, l2)  
    
    <map object at 0x00000000021DA860>  
    

     如果想要得到Python2的那种结果,即返回list列表,那么必须用list作用于map,如下:

    >>> list(map(f1, l1, l2))  
    
    [(0, 'Sun'), (1, 'Mon'), (2, 'Tue'), (3, 'Wed'), (4, 'Thu'), (5, 'Fri'), (6, 'Sat')] 
    

     3.例子(Python3实现):

    假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list:
    方法1:

    def format_name(str):
        str1 = str[0:1].upper() + str[1:].lower()
        return str1
    
    name_list = ['BOB', 'tom', 'IVy']
    print(list(map(format_name, name_list)))
    

    方法2:

    def format_name1(str):
        str1 = str.capitalize()
        return str1
    
    
    name_list = ['BOB', 'tom', 'IVy']
    print(list(map(format_name1, name_list)))
    

    方法3:

    def format_name1(str):
        str1 = str.title()
        return str1
    
    
    name_list = ['BOB', 'tom', 'IVy']
    print(list(map(format_name1, name_list)))
    

    输出结果:

    ['Bob', 'Tom', 'Ivy']

  • 相关阅读:
    核心容器的两个接口(ApplicationContext和BeanFactory)引发出的问题
    ApplicationContext的三个常用实现类:
    IDEA如何找到接口的实现类
    编写BeanFactory
    9.4 Binder系统_驱动情景分析_服务使用过程
    9.3 Binder系统_驱动情景分析_服务获取过程
    9.2 Binder系统_驱动情景分析_服务注册过程
    9.1 Binder系统_C程序示例_框架分析和编写程序
    8.6 Android灯光系统_源码分析_背光灯
    8.5 Android灯光系统_源码分析_通知灯
  • 原文地址:https://www.cnblogs.com/mlan/p/8067815.html
Copyright © 2020-2023  润新知