鱼C论坛

 找回密码
 立即注册
查看: 1076|回复: 9

[已解决]map函数,急

[复制链接]
发表于 2017-7-3 15:13:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
学习map函数功能,理想输入输出,现在返回的是内存地址,不清楚怎么回事,

英文名字不规范,没有按照首字母大写,后续字母小写的规则
输入:['adam', 'LISA', 'barT']
输出:['Adam', 'Lisa', 'Bart']
  1. def format_name(s):
  2.     s1=s[0:1].upper()+s[1:].lower()
  3.     return s1

  4. a = ['adam', 'LISA', 'barT']
  5. for i in a:
  6.     print (map(format_name,i))
复制代码


最佳答案
2017-7-4 19:36:48
sunnychou 发表于 2017-7-4 15:18
直接使用迭代器,生成器。在现在的方法怎么改进尼
  1. print([format_name(i) for i in a])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-3 17:03:12 | 显示全部楼层
本帖最后由 sky 于 2017-7-3 17:08 编辑

首先你的map()可以用list()包起来就出结果了但是返回的并不是str
  1. a = ['adam', 'LISA', 'barT']
  2. print(list(map(format_name,a)))
复制代码

这样就对了 所以不用你自己for循环的啦
ps py3支持了迭代器生成器 所以map reduce filter这种都不推荐用了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-3 17:25:57 | 显示全部楼层
map(func,iterator)
第一个参数是一个函数,第二个参数是一个可迭代对象。
所以用map的时候,不需要用for循环把没一个元素取出。
map函数返回的是一个map对象,可以直接进行迭代。但如果要返回列表,需要使用list才能还原。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-4 08:41:30 | 显示全部楼层
sky 发表于 2017-7-3 17:03
首先你的map()可以用list()包起来就出结果了但是返回的并不是str

这样就对了 所以不用你自己for循环的啦 ...

答案是粗来了,但是加一个list之后表示的什么意思啊,他只能输出迭代器这种,不能直接打印这个意思吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-4 08:42:40 | 显示全部楼层
ooxx7788 发表于 2017-7-3 17:25
map(func,iterator)
第一个参数是一个函数,第二个参数是一个可迭代对象。
所以用map的时候,不需要用for ...

你是说他返回的是对象,所以就是打印的是内存地址?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-4 09:01:59 | 显示全部楼层
本帖最后由 ooxx7788 于 2017-7-4 09:05 编辑
sunnychou 发表于 2017-7-4 08:42
你是说他返回的是对象,所以就是打印的是内存地址?


python 3的range就是python2的Xrange,而其生成的实质上是一种产生数字序列的方法以及记录下对象当前的状态就可以了,而非序列本身。
所以只是在内存上记录下这个方法就可以了。好处就是无论多大的数字序列,它都可以保存,并且不占用空间。缺点就是本身不具备索引,而且值一旦调用不可以返回。
而转成list以后,就需要实际存在的空间去保存这一段序列了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-4 10:12:49 | 显示全部楼层
sunnychou 发表于 2017-7-4 08:42
你是说他返回的是对象,所以就是打印的是内存地址?

对的 3的map就是这样 需要转换一下 都不推荐用了 直接用推导式 生成器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-4 15:18:26 | 显示全部楼层
sky 发表于 2017-7-4 10:12
对的 3的map就是这样 需要转换一下 都不推荐用了 直接用推导式 生成器

直接使用迭代器,生成器。在现在的方法怎么改进尼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-4 19:36:48 | 显示全部楼层    本楼为最佳答案   
sunnychou 发表于 2017-7-4 15:18
直接使用迭代器,生成器。在现在的方法怎么改进尼
  1. print([format_name(i) for i in a])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-4 20:40:31 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-29 13:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表