• python map函数(23)


        截至到目前为止,其实我们已经接触了不少的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教程公众号
    猿说python
    微信公众号 扫一扫关注
  • 相关阅读:
    安卓测试工具uiautomator无法打开失败报错解决方案
    python2 与 python3的区别
    linux下自动获取并安装软件包 apt-get 的命令介绍
    安全测试常用几个工具
    常用安全测试工具
    实时爬取上海快3的结果
    性能测试监控工具nmon安装及使用方法
    locust性能测试框架随笔
    adb常用命令
    App性能测试
  • 原文地址:https://www.cnblogs.com/shuopython/p/11900865.html
Copyright © 2020-2023  润新知