美文网首页
23.python map函数

23.python map函数

作者: 猿说编程 | 来源:发表于2019-12-25 21:36 被阅读0次

      截至到目前为止,其实我们已经接触了不少的python内置函数,而map函数也是其中之一,map函数是根据指定函数对指定序列做映射,在开发中使用map函数也是有效提高程序运行效率的办法之一.

    闻一闻

    一.语法定义

    '''
    function:函数名
    iterable:一个序列或者多个序列,实际上这就是function对应的实参
    '''
    map(function,  iterable,  ...)
    

    参数:

      function:函数名

      iterable:一个序列或者多个序列,实际上这就是function对应的实参

      返回值:返回值是迭代器,注意返回的结果只能迭代一次,如果需要多次使用请提前保存结果并处理。

    二.实战练习

    1.使用map函数

    # !usr/bin/env python
    # -*- coding:utf-8 _*-
    """
    @Author:何以解忧
    @Blog(个人博客地址): shuopython.com
    @WeChat Official Account(微信公众号):猿说python
    @Github:www.github.com
     
    @File:python_map.py
    @Time:2019/10/7 19:48
    
    @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    """
    
    def func1(x):
        # 对序列中的每一个元素乘以10并返回
        return x*10
    
    
    '''
        map() 会根据提供的函数对指定序列做映射。
        序列中的每一个元素调用 func1 函数,返回新列表。
    '''
    x = map(func1,range(0,10))
    print(list(x))
    # map函数返回的迭代器只能迭代一次,迭代之后会自动清空
    print(list(x))
    
    print("***"*20)
    # 将map函数返回的迭代器保存转为list,可以多次使用
    y = list(map(func1,range(0,10)))
    print(y)
    print(y)
    
    

    输出结果:

    [0,  10,  20,  30,  40,  50,  60,  70,  80,  90]
    []
    ************************************************************
    [0,  10,  20,  30,  40,  50,  60,  70,  80,  90]
    [0,  10,  20,  30,  40,  50,  60,  70,  80,  90]
    
    

    2.map函数配合匿名函数一起使用

    # map函数配合匿名函数使用
    x  =  list(map(lambda  a:a*10,range(0,10)))  # 序列中的每个元素乘以10
    print(x)
    
    # map函数配合匿名函数使用,匿名函数有两个参数,所以map传参数应该也是两个序列
    y  =  list(map(lambda  a,b:a+b,[1,2,3,5,6,7],[10,20,30,50,60,70]))  # 两个序列相加
    print(y)
    

    输出结果:

    [0,  10,  20,  30,  40,  50,  60,  70,  80,  90]
    [11,  22,  33,  55,  66,  77]
    

      注意:如果map()函数中的函数是多个参数,那么map传参的时候也应该传递多个序列.

    代码

    三.效率对比

      对比以下效率,向列表中存入一千万条数据,比较下耗时情况:

    
    import time
    list1 = list()
    
    # 普通for循环
    start = time.clock()
    for i in range(0,10000000):
        list1.append(i)
    print("普通for循环耗时:",time.clock() - start)
    
    # 列表推导式
    list1.clear()
    start = time.clock()
    list1 = [i for i in range(0,10000000)]
    print("列表推导式循环耗时:",time.clock() - start)
    
    # map映射函数
    list1.clear()
    start = time.clock()
    list1 = list(map(lambda x:x,range(0,10000000)))
    print("map映射函数耗时:",time.clock() - start)
    
    

      输出结果:

    普通for循环耗时:  1.1869014999999998
    列表推导式循环耗时:  0.5339119999999999
    map映射函数耗时:  0.9047431000000001
    

      根据测试结果看来:列表推导式效率 > map映射函数 > 普通for循环

    复制粘贴

    四.重点总结

      1.map函数的参数是由函数和一个序列或者多个序列构成;

      2.map函数处理的结果是迭代器,而且只能迭代一次,如果需要多次使用,请提前保存;

    猜你喜欢:

      1.python 内置函数input/eval

      2.python return逻辑判断表达式

      3.匿名函数

      转载请注明猿说Python » python map函数



      技术交流、商务合作请直接联系博主,微信扫码或搜索:猿说python

    python教程公众号

    相关文章

      网友评论

          本文标题:23.python map函数

          本文链接:https://www.haomeiwen.com/subject/xgshoctx.html