zoukankan      html  css  js  c++  java
  • python中map()函数的用法讲解

    map函数的原型是map(function, iterable, …),它的返回结果是一个列表。

    参数function传的是一个函数名,可以是python内置的,也可以是自定义的。
    参数iterable传的是一个可以迭代的对象,例如列表,元组,字符串这样的。

    这个函数的意思就是将function应用于iterable的每一个元素,结果以列表的形式返回。注意到没有,iterable后面还有省略号,意思就是可以传很多个iterable,如果有额外的iterable参数,并行的从这些参数中取元素,并调用function。如果一个iterable参数比另外的iterable参数要短,将以None扩展该参数元素。还是看例子来理解吧!

    a=(1,2,3,4,5)
    b=[1,2,3,4,5]
    c="zhangkang"

    la=map(str,a)
    lb=map(str,b)
    lc=map(str,c)

    print(la)
    print(lb)
    print(lc)

    输出:
    ['1', '2', '3', '4', '5']
    ['1', '2', '3', '4', '5']
    ['z', 'h', 'a', 'n', 'g', 'k', 'a', 'n', 'g']
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    str()是python的内置函数,这个例子是把列表/元组/字符串的每个元素变成了str类型,然后以列表的形式返回。当然我们也可以传入自定义的函数,看下面的例子。

    def mul(x):
    return x*x

    n=[1,2,3,4,5]
    res=map(mul,n)

    输出:[1, 4, 9, 16, 25]
    1
    2
    3
    4
    5
    6
    7
    把列表n中的每个元素运行一次mul函数后得到的结果作为最终结果列表的元素。再看下有多个iterable参数的情况。

    def add(x,y,z):
    return x+y+z

    list1=[1,2,3]
    list2=[1,2,3]
    list3=[1,2,3]
    res=map(add,list1,list2,list3)
    print(res)

    输出:[3, 6, 9]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    并行的从三个列表中各自取出元素然后运行add函数,有人可能会问,如果三个列表长度不一样怎么办,前面已经说了,对于短的那个iterable参数会用None填补。对于上面的例子,如果list3=[1,2]的话,那么这个程序会报错,因为虽然在运行add函数的时候列表list3的最后一个元素会用None填补,但是None和int类型的数是不能相加的。也就是说,除非参数function支持None的运算,否则根本没意义。现在我们看下另一个例子你就明白了

    def add(x,y,z):
    return x,y,z

    list1 = [1,2,3]
    list2 = [1,2,3,4]
    list3 = [1,2,3,4,5]
    res = map(add, list1, list2, list3)
    print(res)

    输出:
    [(1, 1, 1), (2, 2, 2), (3, 3, 3), (None, 4, 4), (None, None, 5)]
    ---------------------
    作者:neu_张康
    来源:CSDN
    原文:https://blog.csdn.net/csdn15698845876/article/details/73321593
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Web API中的消息处理程序(Message Handler)
    Web API中的模型验证
    autoconf配置的项目,编译debug版本
    gcc编译工具生成动态库和静态库之一----介绍
    VMware中四种网络连接模式的区别
    vmware虚拟机三种网络模式的区别
    code block自动生成makefile
    centos7 安装 codeblock(rpm)
    利用cbmakegen导出Code::blocks的Makefile
    C/C++程序CPU问题分析
  • 原文地址:https://www.cnblogs.com/weiwei-python/p/9855700.html
Copyright © 2011-2022 走看看