专栏首页idbaPython的map函数

Python的map函数

一 简介 Python 内置了很多非常有用的函数 比如map() ,reduce(),filter(),还有lambda。熟练应用这些函数可以在写python程序的时候构建精简的代码。本文先来了解map函数。 二 使用 用法

  1. map(func, seq1[, seq2,…])

map接收两个参数,第一个参数是函数名,第二个是一个或多个可迭代的序列,返回的是一个集合。运行时,map()将func作用于序列中的每一个元素,并将结果作为一个list返回。如果func为None,作用同zip()。 2.1 当seq 只有一个时,map函数返回将func函数作用于 seq每个元素并返回一个新的list集合,

比如需要将seq的元素乘以2 ,使用map可以写成

  1. In [4]: l=[1, 2, 3, 4, 5, 6, 7, 8, 9]
  2. In [5]: map(lambda x:x*2 ,l)
  3. Out[5]: [2, 4, 6, 8, 10, 12, 14, 16, 18]

如果使用函数来做:

  1. rest=[]
  2. for i in l:
  3. rest.append(i*2)
  4. print rest

map作为高阶函数,能够把运算规则抽象化,显然map 更精简。 2.2 当有多个seq时,map可以并行的取每个seq对应的第M个元素 seqN[M],进行计算。

例子:

  1. In [9]: map(lambda x , y : x * y, [2,4,6],[3,2,1])
  2. Out[9]: [6, 8, 6]

记得多个seq的元素个数必须一致 不然会报错

  1. In [1]: print map(lambda x , y : x ** y, [2,4,6],[3,2,1])
  2. [8, 16, 6]
  3. seq1=[2,4,6] ,seq2=[3,2] 元素个数不一致则报错。
  4. In [3]: print map(lambda x , y : x ** y, [2,4,6],[3,2])
  5. ---------------------------------------------------------------------------
  6. TypeError Traceback (most recent call last)
  7. <ipython-input-3-d075c46afd0b> in <module>()
  8. ----> 1 print map(lambda x , y : x ** y, [2,4,6],[3,2])
  9. <ipython-input-3-d075c46afd0b> in <lambda>(x, y)
  10. ----> 1 print map(lambda x , y : x ** y, [2,4,6],[3,2])
  11. TypeError: unsupported operand type(s) for ** or pow(): 'int' and 'NoneType'
  12. In [4]:

2.3 map在多进程中的应用。

  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3. """
  4. author: yangyi@youzan.com
  5. time: 2017/7/16 上午10:42
  6. func: 参考网络上的例子
  7. """
  8. import urllib2
  9. from multiprocessing.dummy import Pool as ThreadPool
  10. urls = [
  11. 'http://www.python.org',
  12. 'http://www.python.org/about/',
  13. 'http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html',
  14. 'http://www.python.org/doc/',
  15. 'http://www.python.org/download/',
  16. 'http://www.python.org/getit/',
  17. 'http://www.python.org/community/',
  18. 'https://wiki.python.org/moin/',
  19. 'http://planet.python.org/',
  20. 'https://wiki.python.org/moin/LocalUserGroups',
  21. 'http://www.python.org/psf/',
  22. 'http://docs.python.org/devguide/',
  23. 'http://www.python.org/community/awards/'
  24. ]
  25. # Make the Pool of workers
  26. pool = ThreadPool(4)
  27. # Open the urls in their own threads
  28. # and return the results
  29. results = pool.map(urllib2.urlopen, urls)
  30. #close the pool and wait for the work to finish
  31. pool.close()
  32. pool.join()

该例子使用了multiprocessing.dummy的线程池Pool的方式,利用用map的特性来处理url集合。

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-10-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用pyenv维护多版本python开发环境

    开发不同的项目的时候有可能产生安装不同python 版本的需求,那么如何管理多个python版本呢?有大神开发了工具 --pyenv 来解决多版本管理的...

    用户1278550
  • Searching rows for update状态初探

    最近有位朋友咨询说为何如此多线程处于Searching rows for update,当时看到这个状态的第一反应就是锁,这里暂且抛开锁不谈,谈一谈为何出现 S...

    用户1278550
  • 使用innobackup 2.4遇到的问题

    一 前言 Percona公司发布 innobackup 2.4 版本已经很久了,增加了新的特性比如支持非Innodb表备份,指定 --safe-slave-...

    用户1278550
  • KEEVOL咨询方法论 之 KEEWORDS写作法

    KEEVOL的理念是兼收并蓄,只要是好的,就都装到我们的筐子里来,纯粹性不是我们所追求的东西,适合自己的才是最好的。

    扶墙老师
  • [C++]:A*——A Star算法简介

    A*算法 求最优解 算法一直维护两个表: Open和Close 将起点S加入Open中 将所有S可到达的点(障碍物以及位于Close表中的点均看成不可达...

    _gongluck
  • Nginx rewrite正则匹配重写

    Nginx的rewrite功能支持正则匹配重写,即将URL地址临时或永久重新指向某个新的位置,类似于重定向。这个特性有利用当网站结构做出重大调整,如之前的网站m...

    Leshami
  • 如何在VMware中创建虚拟机

    今天给大家分享如何在VMware中创建虚拟机,具体的教程如下。在这里小编提前下载了Ubuntu14.04桌面系统,为后面在虚拟机中安装Ubuntu14.04桌面...

    Python进阶者
  • Spring Cloud Gateway 之 Predict

    在之前的文章的Spring Cloud Gateway初体验中,大家已经对Spring Cloud Gateway的功能有一个初步的认识,网关作为一个系统的流量...

    程序员果果
  • Linux安装python3.5

    Tencent JCoder
  • 再也不需要postman了!有了它rest请求统统搞定,效率翻倍

    上面两种方式给我的感觉是都很麻烦,接口请求参数多了配置很麻烦、总是在复制来复制去,耗时、跨平台不方便、不方便保存、不方便分享等等。

    XING辋

扫码关注云+社区

领取腾讯云代金券