(1)   在 Python 中,map() 函数是一个用于对可迭代对象中的每个元素应用指定函数的内置函数,返回一个包含函数计算结果的新迭代器,是常见的函数式编程工具之一,能提高代码的简洁性和可读性。

       (2) map()语法格式为:map(func,*iterables),其作用是把可调用对象func,依次映射到可迭代对象(*iterables)的每一个元素上,返回一个 可迭代的map对象,其每个元素都是func处理之后的结果。

        (3)func处理之后的map对象,可以转换为列表,元组或者结合,可以通过for语句遍历。

        (4)其中的元素只能被访问一次。

  • a=map(int,input().split(' '))
    print(a)
    for w in a:
        print(w,end=' ')
  • 1 2 3 4
    <map object at 0x0000017EB0B57EE0>
    1 2 3 4 

        在此例中,从键盘输入多个数字,并通过int转换为整型,其中int即是本例中的func,input().split(' ')是int作用的对象,把输入数字转换为整型(默认为字符型)。

        变量a赋值为map()转换后的可迭代对象,输出a,其结果是一个对象地址:<map object at 0x0000017EB0B57EE0>。
             用for w in a:进行遍历,可以输出其结果。但此遍历只能执行一次,如下所示for v in a:语句就没有结果。

  • a=map(int,input().split(' '))
    print(a)
    for w in a:
        print(w,end=' ')
    for v in a:
        print(v,end=' ')
  • 1 2 3 4
    <map object at 0x00000282F1990D60>
    1 2 3 4 

    如果此处我们用list函数作用于map(),将直接得到a是一个数组,如下所示:

  • a=list(map(int,input().split(' ')))
    print(a)
    
  • 1 2 3 4
    [1, 2, 3, 4]

(5)map()结合lambda处理数组

  • a=[1,2,3,4,5]
    b=map(lambda x:x**2,a)
    print(list(b))
  • [1, 4, 9, 16, 25]
    

此处可以通过如下语句实现,但map看起来更加易懂一些,且效率要高一些。

  • a=[1,2,3,4,5]
    b=[w**2 for w in a]
    print(b)
  • [1, 4, 9, 16, 25]
    

另外也可以结合切片处理部分数据,如下所示

  • a=[1,2,3,4,5]
    c=list(map(lambda x:x**2,[x for x in a[3:]]))
    print(c)
  • [16, 25]

(6)map处理多个可迭代对象(数组a,b两个对象)

  • a=[1,2,3,4,5]
    b=[5,4,3,2,1]
    c=map(lambda x,y:x+y,a,b)
    print(list(c))
  • [6, 6, 6, 6, 6]
    

        如上所示,map和lambda结合使用,快速简洁地实现两个数组元素对应相加的计算。这比用for 语句等循环效率要高。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐