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中 ...
随机推荐
- T&F 圆桌:儿童智能玩具离我们还有多远?
“女人和孩子的钱是最好挣的”,这句经典的名句被很多商家奉为信条,这在现实生活中也得到了很好的印证. 各种步行街.商业街.Mall 干的做多的事情就是:围绕着女人和孩子打造创造消费点.步行街.商业街上各 ...
- Beta周王者荣耀交流协会第五次Scrum会议
1. 立会照片 成员王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐. master:王磊 2. 时间跨度 2017年11月14日 19:00 — 19:50 ,总计50分钟. 3. 地点 一食 ...
- TeamWork#3,Week5,Scrum Meeting 11.13
最近我们根据之前发现的问题, 补充了相关知识,正在努力修复出现的问题,调整程序结构. 成员 已完成 待完成 彭林江 之前没有考虑到网站信息更新导致的程序可变性,正在调整爬虫程序结构 更换爬虫结构 郝倩 ...
- 20172329 2018-2019 《Java软件结构与数据结构》实验三报告
20172329 2018-2019-2 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...
- WebGL学习笔记五
本章主要是对纹理的进一步讲解,我们很多时候需要将现实中已有 的图片在网页中展示出来而不是去创造图片,通过纹理 我们可以将光栅化的图形和图片纹理形成映射并且将图片在图形 中显示出来.基本过程与前几章一致 ...
- BATA冲刺准备
目录 第一部分 调研,评测 福大助手的bug IOS端 Android端 福大助手结构体系的思维导图 为什么开发人员没有发现这个bug 假设团队开发这款app,应注意哪些方面(架构.部署运维.微服务等 ...
- 在onResume()中调用getIntent()得不到Extra的问题
之前 想做activity间的传值,注意 不是 startActivityforResult的那种, 在启动了多层activity再次启动activity想进入到singleTask的MainActi ...
- mybatis连接数据库的几种方式
1.可以通过配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="ht ...
- Alpha版本冲刺(八)
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...
- 12_Java面向对象_第12天(构造方法、this、super)_讲义
今日内容介绍 1.构造方法 2.this关键字 3.super关键字 4.综合案例 01构造方法引入 A:构造方法的引入 在开发中经常需要在创建对象的同时明确对象的属性值, 比如员工入职公司就要明确他 ...