1、用我们之前学过的求一下平方(只有一个列表)

  1. #求平方
  2. num=[1,5,6,2,7,8]
  3. a=[]
  4. for n in num:
  5. a.append(n**2)
  6. print (a)
  7.  
  8. C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
  9.  
  10. [1, 25, 36, 4, 49, 64]

2、写成函数,这样在有多个列表的时候只要调用一下这个函数就可以了

  1. num=[1,5,6,2,7,8]
  2. num_1=[22,333,11,55,66]
  3. def map_atest(array):
  4. ret = []
  5. for n in array:
  6. ret.append(n**2)
  7. return ret
  8. ret=map_atest(num)
  9. ret1=map_atest(num_1)
  10. print (ret)
  11. print(ret1)
  12.  
  13. C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
  14.  
  15. [1, 25, 36, 4, 49, 64]
  16.  
  17. [484, 110889, 121, 3025, 4356]

3、现在需求又变了。要求列表里面的每个数自增加1

  1. num=[1,5,6,2,7,8]
  2. num_1=[22,333,11,55,66]
  3. def add_one(x):#1.定义一个自增1的函数
  4. return x+1
  5. def add_reduce_one(x):#2.定义一个自减1的函数
  6. return x-1
  7. def map_atest(func,array):#3.定义一个函数,需要穿2个参数
  8. ret = []#4.1定义一个空列表
  9. for n in array:#这个arraynum传进来的列表,做for循环
  10. res=func(n)#func就是add_one这个函数,传的值是n,就把n自增加了1 add_one(n),然后赋值给变量
  11. ret.append(res)
  12. return ret
  13. print(map_atest(add_one,num))#4. 2个参数add_one num 2个都是函数
  14. print(map_atest(add_one,num_1))
  15.  
  16. C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
  17.  
  18. [2, 6, 7, 3, 8, 9]
  19.  
  20. [23, 334, 12, 56, 67]

我们把自增1和自减1都写成了函数,这样在下面一调用函数,把列表传进去就可以了

  1. num=[1,5,6,2,7,8]
  2. num_1=[22,333,11,55,66]
  3. def add_one(x):#1.定义一个自增1的函数
  4. return x+1
  5. def add_reduce_one(x):#2.定义一个自减1的函数
  6. return x-1
  7. def map_atest(func,array):#3.定义一个函数,需要穿2个参数
  8. ret = []#4.1定义一个空列表
  9. for n in array:#这个arraynum传进来的列表,做for循环
  10. res=func(n)#func就是add_one这个函数,传的值是n,就把n自增加了1 add_one(n),然后赋值给变量
  11. ret.append(res)
  12. return ret
  13. print(map_atest(add_reduce_one,num))#4. 2个参数add_reduceone num 2个都是函数
  14. print(map_atest(add_reduce_one,num_1))
  15.  
  16. C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
  17.  
  18. [0, 4, 5, 1, 6, 7]
  19.  
  20. [21, 332, 10, 54, 65]

4、在添加一个求平方的函数

这样子看起来很灵活了,还不够好

  1. num=[1,5,6,2,7,8]
  2. num_1=[22,333,11,55,66]
  3. def add_one(x):#1.定义一个自增1的函数
  4. return x+1
  5. def reduce_one(x):#2.定义一个自减1的函数
  6. return x-1
  7. def pf_one(x):
  8. return x**2
  9. def map_atest(func,array):#3.定义一个函数,需要穿2个参数
  10. ret = []#4.1定义一个空列表
  11. for n in array:#这个arraynum传进来的列表,做for循环
  12. res=func(n)#func就是add_one这个函数,传的值是n,就把n自增加了1 add_one(n),然后赋值给变量
  13. ret.append(res)
  14. return ret
  15. print(map_atest(add_one,num))#4. 2个参数add_one num 2个都是函数
  16. print(map_atest(reduce_one,num_1))
  17. print(map_atest(pf_one,num_1))
  18.  
  19. C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
  20.  
  21. [2, 6, 7, 3, 8, 9]
  22.  
  23. [21, 332, 10, 54, 65]
  24.  
  25. [484, 110889, 121, 3025, 4356]

5、在上面的基础上,在进行精简,刚刚学了匿名函数,现在我们就可以用上了

  1. def add_one(x):#1.定义一个自增1的函数
  2. return x+1
  3.  
  4. 这个函数就等于 lambda x:x+1
  5.  
  6. def add_reduce_one(x):#2.定义一个自减1的函数
  7. return x-1
  8.  
  9. 这个函数等于 lambda x:x-1
  10.  
  11. def pf_one(x):
  12. return x**2
  13.  
  14. 这个函数等于 lambda x:x**2

然后最后精简完成就是下面这样了,用了3个lambda代替了3个函数。代码更少了

  1. num=[1,5,6,2,7,8]
  2. num_1=[22,333,11,55,66]
  3. def map_atest(func,array):#3.定义一个函数,需要穿2个参数
  4. ret = []#4.1定义一个空列表
  5. for n in array:#这个arraynum传进来的列表,做for循环
  6. res=func(n)#func就是add_one这个函数,传的值是n,就把n自增加了1 add_one(n),然后赋值给变量
  7. ret.append(res)
  8. return ret
  9. print(map_atest(lambda x:x+1,num))#4. 2个参数add_one num 2个都是函数
  10. print(map_atest(lambda x:x-1,num_1))
  11. print(map_atest(lambda x:x**2,num_1))
  12.  
  13. C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
  14.  
  15. [2, 6, 7, 3, 8, 9]
  16.  
  17. [21, 332, 10, 54, 65]
  18.  
  19. [484, 110889, 121, 3025, 4356]

6、我们来看下map函数的用法,打印出来的是一个内存地址

  1. #我们看下系统内置函数map
  2. print (map(lambda x:x+1,num))
  3.  
  4. C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
  5.  
  6. <map object at 0x0000000000A14128>

map处理的一个结果是一个迭代器,只能迭代一次

  1. rec=map(lambda x:x+1,num)
  2. for n in (rec):
  3. print (n)
  4.  
  5. C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
  6.  
  7. [2, 6, 7, 3, 8, 9]
  8.  
  9. 2
  10.  
  11. 6
  12.  
  13. 7
  14.  
  15. 3
  16.  
  17. 8
  18.  
  19. 9
  1. rec=map(lambda x:x+1,num)
  2. # for n in (rec):
  3. # print (n)
  4. print (list(rec))
  5.  
  6. C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
  7.  
  8. [2, 6, 7, 3, 8, 9]
  9.  
  10. [2, 6, 7, 3, 8, 9]

7、总结map函数的用法,需要传2个参数,在python内部,就相当于一个for循环,把每次遍历的那个数字交给这个处理方法

map(一个处理方法,一个可迭代对象)

8、map后面不一定用lambda,只用自定义函数也可以的

  1. num=[1,5,6,2,7,8]
  2. def add_one(x):#1.定义一个自增1的函数
  3. return x+1
  4. print (list(map(add_one,num)))
  5.  
  6. C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
  7.  
  8. [2, 6, 7, 3, 8, 9]

9、map函数处理字符串,把字符串都变成大写

  1. msg="gouguqoi"
  2.  
  3. list(map(lambda x:x.upper(),msg))

上面的代码是这样形成的

  1. 第一步
  2.  
  3. msg="gouguqoi"
  4. map(lambda x:x.upper(),msg)
  5.  
  6. 第二步
  7.  
  8. msg="gouguqoi"
  9. list(map(lambda x:x.upper(),msg))
  10.  
  11. 第三步
  12.  
  13. msg="gouguqoi"
  14. print (list(map(lambda x:x.upper(),msg)))

10、将列表里面的元素变成字符串的类型

  1. num=[1,5,6,2,7,8]
  2. print(list(map(lambda x:str(x),num)))
  3. print(list(map(str,num)))
  4.  
  5. ['', '', '', '', '', '']
  6.  
  7. ['', '', '', '', '', '']

map总结:

处理序列中的每个元素,得到的结果是一个“列表”(迭代器),该“列表”个数已位置与原来一样,然后把每个元素依次交给前面的这个处理方法,最后得到一个列表的结果

python的map函数的使用方法详解以及使用案例(处理每个元素的自增、自减、平方等)的更多相关文章

  1. python的filter函数的使用方法详解以及使用案例,是否以什么结尾,是否大于什么(判断是True,则留下来)

    1.总共有3个人看电影,有2个人看电影经常说话,我们把他们两个过滤出去 move_people=["gouguoqi","beiye_sb","xiu ...

  2. python的reduce函数的使用方法详解以及使用案例,相加,相乘(处理一个序列,然后把序列进程合并操作)

    1.求列表的数字相加之和,还是之前的习惯,写for循环来实现 num_1=[1,2,3,4,5,6,7,8,9] a=0 for n in num_1: #a=a+n a+=n print (a) C ...

  3. python的内置模块random随机模块方法详解以及使用案例(五位数随机验证码的实现)

    1.random(self): Get the next random number in the range [0.0, 1.0) 取0到1直接的随机浮点数 import random print( ...

  4. Python调用C/C++动态链接库的方法详解

    Python调用C/C++动态链接库的方法详解 投稿:shichen2014 这篇文章主要介绍了Python调用C/C++动态链接库的方法,需要的朋友可以参考下 本文以实例讲解了Python调用C/C ...

  5. Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)

    Python 在子类中调用父类方法详解(单继承.多层继承.多重继承)   by:授客 QQ:1033553122   测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...

  6. python中验证码连通域分割的方法详解

    python中验证码连通域分割的方法详解 这篇文章主要给大家介绍了关于python中验证码连通域分割的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需 ...

  7. python的dict()字典数据类型的方法详解以及案例使用

    一.之前的回顾 # int  数字 # str 字符串 # list 列表 # tuple 元组 # dict 字典 字典中最重要的方法 keys() values() items() get upd ...

  8. 【Python】Linux crontab定时任务配置方法(详解)

    CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. cron 系统调度进程. 可以使用它在 ...

  9. Python中防止sql注入的方法详解

    SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库.下面这篇文章主要给大家介绍了关于Python中 ...

随机推荐

  1. Linux基础入门--06

    简单的文本处理 实验介绍 这一节我们将介绍这几个命令:tr.col.join.paste 1.tr: -d:删除和set1匹配的字符,不是全词匹配也不是按字符顺序匹配 -s:除去指定的连续并重复的字符 ...

  2. js汉字按字母排序

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  3. node入门学习(一)

    一.安装node.js 方式很多npm,git等,新手建议从官网上直接去下载node的安装包.一键安装. 二.创建一个web服务器. const http = require('http'); htt ...

  4. 笔记之分布式文件系统(DFS)

    不知何故,老外都挺喜欢使用DFS,但是国内公司用这个的不多.一个具体的需求就是,备份服务器在国外,所以启用DFS把国内的数据同步一份到国外进行备份.最近有机会接触DFS,把一些心得体会记录一下. 1. ...

  5. [转帖] Oracle JDK 11 正式发布.. 版本号真快

    Java 11 / JDK 11 正式发布! oschina 发布于 2018年09月26日 收藏 19 评论 38   在您的既有IT基础设施上按需构建人工智能更高效>>>   美 ...

  6. AlarmManager的使用

    原文地址:http://www.cnblogs.com/kross/p/3643708.html AlarmManager可以设定一个规定的时间,或者重复从某一个时间开始,等间隔的做一个操作.可以用来 ...

  7. NLP & 中文分词

    NLP & 中文分词 中文分词 (Word Segmentation, WS) 指的是将汉字序列切分成词序列. 中文自然语言处理系统 https://www.ltp-cloud.com/int ...

  8. delphi ERP框架

    之前做c/s架构,接了有家装饰的一个ERP项目,做了一个ERP框架,现在转后端开发了,这些东西还是蛮怀念的,就开源出来吧,有需要的同学可以参考. https://github.com/qianlnk/ ...

  9. HDU4722——Good Numbers——2013 ACM/ICPC Asia Regional Online —— Warmup2

    今天比赛做得一个数位dp. 首先声明这个题目在数位dp中间绝对是赤裸裸的水题.毫无技巧可言. 题目的意思是个你a和b,要求出在a和b中间有多少个数满足数位上各个数字的和为10的倍数. 显然定义一个二维 ...

  10. 多进程编程之守护进程Daemonize

    1.守护进程 守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务.很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭.另一些只在需要的时候才启动,完成任务后就自动结束. ...