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函数的使用方法详解以及使用案例(处理每个元素的自增、自减、平方等)的更多相关文章

  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. T&F 圆桌:儿童智能玩具离我们还有多远?

    “女人和孩子的钱是最好挣的”,这句经典的名句被很多商家奉为信条,这在现实生活中也得到了很好的印证. 各种步行街.商业街.Mall 干的做多的事情就是:围绕着女人和孩子打造创造消费点.步行街.商业街上各 ...

  2. Beta周王者荣耀交流协会第五次Scrum会议

    1. 立会照片 成员王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐. master:王磊 2. 时间跨度 2017年11月14日 19:00 — 19:50 ,总计50分钟. 3. 地点 一食 ...

  3. TeamWork#3,Week5,Scrum Meeting 11.13

    最近我们根据之前发现的问题, 补充了相关知识,正在努力修复出现的问题,调整程序结构. 成员 已完成 待完成 彭林江 之前没有考虑到网站信息更新导致的程序可变性,正在调整爬虫程序结构 更换爬虫结构 郝倩 ...

  4. 20172329 2018-2019 《Java软件结构与数据结构》实验三报告

    20172329 2018-2019-2 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...

  5. WebGL学习笔记五

    本章主要是对纹理的进一步讲解,我们很多时候需要将现实中已有 的图片在网页中展示出来而不是去创造图片,通过纹理 我们可以将光栅化的图形和图片纹理形成映射并且将图片在图形 中显示出来.基本过程与前几章一致 ...

  6. BATA冲刺准备

    目录 第一部分 调研,评测 福大助手的bug IOS端 Android端 福大助手结构体系的思维导图 为什么开发人员没有发现这个bug 假设团队开发这款app,应注意哪些方面(架构.部署运维.微服务等 ...

  7. 在onResume()中调用getIntent()得不到Extra的问题

    之前 想做activity间的传值,注意 不是 startActivityforResult的那种, 在启动了多层activity再次启动activity想进入到singleTask的MainActi ...

  8. mybatis连接数据库的几种方式

    1.可以通过配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="ht ...

  9. Alpha版本冲刺(八)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  10. 12_Java面向对象_第12天(构造方法、this、super)_讲义

    今日内容介绍 1.构造方法 2.this关键字 3.super关键字 4.综合案例 01构造方法引入 A:构造方法的引入 在开发中经常需要在创建对象的同时明确对象的属性值, 比如员工入职公司就要明确他 ...