python 列表内字符串首字母大写问题

问题源自廖雪峰python教程里面map/reduce里面的一章
用函数还有map,让列表里面的字符串首字母都大写,然后返回列表

链接

初始代码如下,for in 迭代,然后返回字符串的capitalize(), 但是返回的都是单个的,不清楚为什么后面的不返回,我前面学过点js, 我记得应该是要都返回的
只返回单个

然后我试着用map对每个都进行操作,代码如下,但是却只返回列表里面字符串的首字母
返回首字母

答案是我看到下面评论的,我可以理解labmda函数,也试着跑了下是ok的,但是我直接把lambda匿名函数转换为常用函数的时候却显示list没有capitalize的属性,这个我理解,但是我不理解那为什么lambda函数可以跑起来
对的

错的

求解答,谢谢!

阅读 3.1k
1 个回答

第一个只返回一个值是因为每个函数只会返回一次,然后就结束了。
第二个用map方法时,是把x列表的每一项代入到到normalize函数中执行,每次放入一个x中的字符串到normalize函数,因此只返回第一个字母,原因同上(函数中的循环执行第一次就返回结果了)。
后面的错误都是因为capitalize方法是字符串才有的,list没有这个方法。

--补充
用map的时候真实的逻辑是这样的:

    for i in 'sdas':
        return i.capitalize()
    for i in 'dsdwds':
        return i.capitalize()  

每个都只执行到第一个字母就结束了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题