python的map函数的使用方法详解以及使用案例(处理每个元素的自增、自减、平方等)
1、用我们之前学过的求一下平方(只有一个列表)
- #求平方
- num=[1,5,6,2,7,8]
- a=[]
- for n in num:
- a.append(n**2)
- print (a)
- C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
- [1, 25, 36, 4, 49, 64]
2、写成函数,这样在有多个列表的时候只要调用一下这个函数就可以了
- num=[1,5,6,2,7,8]
- num_1=[22,333,11,55,66]
- def map_atest(array):
- ret = []
- for n in array:
- ret.append(n**2)
- return ret
- ret=map_atest(num)
- ret1=map_atest(num_1)
- print (ret)
- print(ret1)
- C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
- [1, 25, 36, 4, 49, 64]
- [484, 110889, 121, 3025, 4356]
3、现在需求又变了。要求列表里面的每个数自增加1
- num=[1,5,6,2,7,8]
- num_1=[22,333,11,55,66]
- def add_one(x):#1.定义一个自增1的函数
- return x+1
- def add_reduce_one(x):#2.定义一个自减1的函数
- return x-1
- def map_atest(func,array):#3.定义一个函数,需要穿2个参数
- ret = []#4.1定义一个空列表
- for n in array:#这个array是num传进来的列表,做for循环
- res=func(n)#func就是add_one这个函数,传的值是n,就把n自增加了1 add_one(n),然后赋值给变量
- ret.append(res)
- return ret
- print(map_atest(add_one,num))#4. 传2个参数add_one num 这2个都是函数
- print(map_atest(add_one,num_1))
- C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
- [2, 6, 7, 3, 8, 9]
- [23, 334, 12, 56, 67]
我们把自增1和自减1都写成了函数,这样在下面一调用函数,把列表传进去就可以了
- num=[1,5,6,2,7,8]
- num_1=[22,333,11,55,66]
- def add_one(x):#1.定义一个自增1的函数
- return x+1
- def add_reduce_one(x):#2.定义一个自减1的函数
- return x-1
- def map_atest(func,array):#3.定义一个函数,需要穿2个参数
- ret = []#4.1定义一个空列表
- for n in array:#这个array是num传进来的列表,做for循环
- res=func(n)#func就是add_one这个函数,传的值是n,就把n自增加了1 add_one(n),然后赋值给变量
- ret.append(res)
- return ret
- print(map_atest(add_reduce_one,num))#4. 传2个参数add_reduceone num 这2个都是函数
- print(map_atest(add_reduce_one,num_1))
- C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
- [0, 4, 5, 1, 6, 7]
- [21, 332, 10, 54, 65]
4、在添加一个求平方的函数
这样子看起来很灵活了,还不够好
- num=[1,5,6,2,7,8]
- num_1=[22,333,11,55,66]
- def add_one(x):#1.定义一个自增1的函数
- return x+1
- def reduce_one(x):#2.定义一个自减1的函数
- return x-1
- def pf_one(x):
- return x**2
- def map_atest(func,array):#3.定义一个函数,需要穿2个参数
- ret = []#4.1定义一个空列表
- for n in array:#这个array是num传进来的列表,做for循环
- res=func(n)#func就是add_one这个函数,传的值是n,就把n自增加了1 add_one(n),然后赋值给变量
- ret.append(res)
- return ret
- print(map_atest(add_one,num))#4. 传2个参数add_one num 这2个都是函数
- print(map_atest(reduce_one,num_1))
- print(map_atest(pf_one,num_1))
- C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
- [2, 6, 7, 3, 8, 9]
- [21, 332, 10, 54, 65]
- [484, 110889, 121, 3025, 4356]
5、在上面的基础上,在进行精简,刚刚学了匿名函数,现在我们就可以用上了
- def add_one(x):#1.定义一个自增1的函数
- return x+1
- 这个函数就等于 lambda x:x+1
- def add_reduce_one(x):#2.定义一个自减1的函数
- return x-1
- 这个函数等于 lambda x:x-1
- def pf_one(x):
- return x**2
- 这个函数等于 lambda x:x**2
然后最后精简完成就是下面这样了,用了3个lambda代替了3个函数。代码更少了
- num=[1,5,6,2,7,8]
- num_1=[22,333,11,55,66]
- def map_atest(func,array):#3.定义一个函数,需要穿2个参数
- ret = []#4.1定义一个空列表
- for n in array:#这个array是num传进来的列表,做for循环
- res=func(n)#func就是add_one这个函数,传的值是n,就把n自增加了1 add_one(n),然后赋值给变量
- ret.append(res)
- return ret
- print(map_atest(lambda x:x+1,num))#4. 传2个参数add_one num 这2个都是函数
- print(map_atest(lambda x:x-1,num_1))
- print(map_atest(lambda x:x**2,num_1))
- C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
- [2, 6, 7, 3, 8, 9]
- [21, 332, 10, 54, 65]
- [484, 110889, 121, 3025, 4356]
6、我们来看下map函数的用法,打印出来的是一个内存地址
- #我们看下系统内置函数map
- print (map(lambda x:x+1,num))
- C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
- <map object at 0x0000000000A14128>
map处理的一个结果是一个迭代器,只能迭代一次
- rec=map(lambda x:x+1,num)
- for n in (rec):
- print (n)
- C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
- [2, 6, 7, 3, 8, 9]
- 2
- 6
- 7
- 3
- 8
- 9
- rec=map(lambda x:x+1,num)
- # for n in (rec):
- # print (n)
- print (list(rec))
- C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
- [2, 6, 7, 3, 8, 9]
- [2, 6, 7, 3, 8, 9]
7、总结map函数的用法,需要传2个参数,在python内部,就相当于一个for循环,把每次遍历的那个数字交给这个处理方法
map(一个处理方法,一个可迭代对象)
8、map后面不一定用lambda,只用自定义函数也可以的
- num=[1,5,6,2,7,8]
- def add_one(x):#1.定义一个自增1的函数
- return x+1
- print (list(map(add_one,num)))
- C:\python35\python3.exe D:/pyproject/day14函数/map函数.py
- [2, 6, 7, 3, 8, 9]
9、map函数处理字符串,把字符串都变成大写
- msg="gouguqoi"
- list(map(lambda x:x.upper(),msg))
上面的代码是这样形成的
- 第一步
- msg="gouguqoi"
- map(lambda x:x.upper(),msg)
- 第二步
- msg="gouguqoi"
- list(map(lambda x:x.upper(),msg))
- 第三步
- msg="gouguqoi"
- print (list(map(lambda x:x.upper(),msg)))
10、将列表里面的元素变成字符串的类型
- num=[1,5,6,2,7,8]
- print(list(map(lambda x:str(x),num)))
- print(list(map(str,num)))
- ['', '', '', '', '', '']
- ['', '', '', '', '', '']
map总结:
处理序列中的每个元素,得到的结果是一个“列表”(迭代器),该“列表”个数已位置与原来一样,然后把每个元素依次交给前面的这个处理方法,最后得到一个列表的结果
python的map函数的使用方法详解以及使用案例(处理每个元素的自增、自减、平方等)的更多相关文章
- python的filter函数的使用方法详解以及使用案例,是否以什么结尾,是否大于什么(判断是True,则留下来)
1.总共有3个人看电影,有2个人看电影经常说话,我们把他们两个过滤出去 move_people=["gouguoqi","beiye_sb","xiu ...
- 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 ...
- python的内置模块random随机模块方法详解以及使用案例(五位数随机验证码的实现)
1.random(self): Get the next random number in the range [0.0, 1.0) 取0到1直接的随机浮点数 import random print( ...
- Python调用C/C++动态链接库的方法详解
Python调用C/C++动态链接库的方法详解 投稿:shichen2014 这篇文章主要介绍了Python调用C/C++动态链接库的方法,需要的朋友可以参考下 本文以实例讲解了Python调用C/C ...
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
Python 在子类中调用父类方法详解(单继承.多层继承.多重继承) by:授客 QQ:1033553122 测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...
- python中验证码连通域分割的方法详解
python中验证码连通域分割的方法详解 这篇文章主要给大家介绍了关于python中验证码连通域分割的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需 ...
- python的dict()字典数据类型的方法详解以及案例使用
一.之前的回顾 # int 数字 # str 字符串 # list 列表 # tuple 元组 # dict 字典 字典中最重要的方法 keys() values() items() get upd ...
- 【Python】Linux crontab定时任务配置方法(详解)
CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. cron 系统调度进程. 可以使用它在 ...
- Python中防止sql注入的方法详解
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库.下面这篇文章主要给大家介绍了关于Python中 ...
随机推荐
- Linux基础入门--06
简单的文本处理 实验介绍 这一节我们将介绍这几个命令:tr.col.join.paste 1.tr: -d:删除和set1匹配的字符,不是全词匹配也不是按字符顺序匹配 -s:除去指定的连续并重复的字符 ...
- js汉字按字母排序
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- node入门学习(一)
一.安装node.js 方式很多npm,git等,新手建议从官网上直接去下载node的安装包.一键安装. 二.创建一个web服务器. const http = require('http'); htt ...
- 笔记之分布式文件系统(DFS)
不知何故,老外都挺喜欢使用DFS,但是国内公司用这个的不多.一个具体的需求就是,备份服务器在国外,所以启用DFS把国内的数据同步一份到国外进行备份.最近有机会接触DFS,把一些心得体会记录一下. 1. ...
- [转帖] Oracle JDK 11 正式发布.. 版本号真快
Java 11 / JDK 11 正式发布! oschina 发布于 2018年09月26日 收藏 19 评论 38 在您的既有IT基础设施上按需构建人工智能更高效>>> 美 ...
- AlarmManager的使用
原文地址:http://www.cnblogs.com/kross/p/3643708.html AlarmManager可以设定一个规定的时间,或者重复从某一个时间开始,等间隔的做一个操作.可以用来 ...
- NLP & 中文分词
NLP & 中文分词 中文分词 (Word Segmentation, WS) 指的是将汉字序列切分成词序列. 中文自然语言处理系统 https://www.ltp-cloud.com/int ...
- delphi ERP框架
之前做c/s架构,接了有家装饰的一个ERP项目,做了一个ERP框架,现在转后端开发了,这些东西还是蛮怀念的,就开源出来吧,有需要的同学可以参考. https://github.com/qianlnk/ ...
- HDU4722——Good Numbers——2013 ACM/ICPC Asia Regional Online —— Warmup2
今天比赛做得一个数位dp. 首先声明这个题目在数位dp中间绝对是赤裸裸的水题.毫无技巧可言. 题目的意思是个你a和b,要求出在a和b中间有多少个数满足数位上各个数字的和为10的倍数. 显然定义一个二维 ...
- 多进程编程之守护进程Daemonize
1.守护进程 守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务.很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭.另一些只在需要的时候才启动,完成任务后就自动结束. ...