Python之map()函数详解

Python之map()函数详解

码农世界 2024-05-26 后端 72 次浏览 0个评论

文章目录

  • 一、map() 函数简介
    • 1.1 map() 函数基本语法
    • 1.2 map() 函数+ lambda表达式
    • 1.3 map() 函数输入多个可迭代对象iterable
    • 1.4 查看返回的迭代器内容
    • 二、map() 函数示例
      • 示例一:使用 map() 函数操作字符串列表
      • 示例二:使用 map() 函数操作元组列表
      • 参考资料

        一、map() 函数简介

        当我们使用列表或者元组时,经常需要对列表元素进行数学变换操作并返回一个新的列表。例如,我们想要将列表 bonuses 中的每个元素都乘以 2:

        bonuses = [100, 200, 300]
        

        为此,我们可以使用一个 for 循环遍历列表,将每个元素乘以 2,然后将结果添加到一个新的列表中:

        bonuses = [100, 200, 300]
        new_bonuses = []
        for x in bonuses:
            new_bonuses.append(x*2)
        print(new_bonuses)  # 输出:[200, 400, 600]
        

        1.1 map() 函数基本语法

        Python 提供了一个内置的 map() 函数,可以更加方便地执行这类操作。

        以下是 map() 函数的基本语法:

        map(function, iterable)
        

        参数解释如下:

        • function:一个函数或方法
        • iterable:一个或多个序列(可迭代对象)

          map() 函数的作用是:对序列 iterable 中每一个元素调用 function 函数,返回一个map对象实例。这个map对象本质上来讲是一个迭代器。

          回到上面的示例,我们可以定义一个乘以 2 的函数,然后使用 map() 函数调用该函数:

          def double_func(x):
              return x* 2
          bonuses = [100, 200, 300]
          iterator = map(double_func, bonuses)
          

          1.2 map() 函数+ lambda表达式

          或者也可以使用 lambda 表达式对代码进一步进行简化,例如:

          bonuses = [100, 200, 300]
          iterator = map(lambda x: x*2, bonuses)
          print(list(iterator))  # 输出:[200, 400, 600]
          

          1.3 map() 函数输入多个可迭代对象iterable

          b1 = [100, 200, 300]
          b2 = [1, 2, 3]
          iterator = map(lambda x,y : x*y, b1, b2)
          print(list(iterator))  # 输出:[100, 400, 900]
          

          1.4 查看返回的迭代器内容

          使用map函数获得了迭代器iterator后,我们如何查看其中的内容呢?

          • 直接输出迭代器iterator,输出 map object 及其物理地址:
            print(iterator)
            # 输出:
            
            • 使用 for 循环对其进行遍历迭代器iterator:
              for x in iterator:
                  print(x)
              # 输出:
              # 200
              # 400
              # 600
              
              • 使用 list() 函数将迭代器转换为一个列表:
                print(list(iterator))
                # 输出:[200, 400, 600]
                

                二、map() 函数示例

                接下来我们继续看几个使用 map() 函数操作列表的示例。

                示例一:使用 map() 函数操作字符串列表

                以下示例使用 map() 函数对字符串列表中的每个元素进行首字母大写转换,然后返回一个新的列表:

                names = ['david', 'peter', 'jenifer']
                new_names = map(lambda name: name.capitalize(), names)
                print(list(new_names))
                

                输出结果如下:

                ['David', 'Peter', 'Jenifer']
                

                示例二:使用 map() 函数操作元组列表

                假设存在以下由多个元组组成的购物车列表:

                carts = [['SmartPhone', 400],
                         ['Tablet', 450],
                         ['Laptop', 700]]
                

                我们需要计算每个产品的纳税额,税率为 10%。同时,我们需要将纳税额作为第三个元素添加到每个产品信息中。最终返回的列表如下:

                [['SmartPhone', 400, 40.0],
                ['Tablet', 450, 45.0],
                ['Laptop', 700, 70.0]]
                

                为此,我们可以使用 map() 函数创建一个新的元素,将纳税额作为它的值:

                carts = [['SmartPhone', 400],
                         ['Tablet', 450],
                         ['Laptop', 700]]
                TAX = 0.1
                carts = map(lambda item: [item[0], item[1], item[1] * TAX], carts)
                print(list(carts))
                

                参考资料

                • 【Python基础教程】第37篇 map()函数:https://zhuanlan.zhihu.com/p/474884078

转载请注明来自码农世界,本文标题:《Python之map()函数详解》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,72人围观)参与讨论

还没有评论,来说两句吧...

Top