问题源自廖雪峰python教程里面map/reduce里面的一章
用函数还有map,让列表里面的字符串首字母都大写,然后返回列表
初始代码如下,for in 迭代,然后返回字符串的capitalize(), 但是返回的都是单个的,不清楚为什么后面的不返回,我前面学过点js, 我记得应该是要都返回的
然后我试着用map对每个都进行操作,代码如下,但是却只返回列表里面字符串的首字母
答案是我看到下面评论的,我可以理解labmda函数,也试着跑了下是ok的,但是我直接把lambda匿名函数转换为常用函数的时候却显示list没有capitalize的属性,这个我理解,但是我不理解那为什么lambda函数可以跑起来
求解答,谢谢!
第一个只返回一个值是因为每个函数只会返回一次,然后就结束了。
第二个用map方法时,是把x列表的每一项代入到到normalize函数中执行,每次放入一个x中的字符串到normalize函数,因此只返回第一个字母,原因同上(函数中的循环执行第一次就返回结果了)。
后面的错误都是因为capitalize方法是字符串才有的,list没有这个方法。
--补充
用map的时候真实的逻辑是这样的:
每个都只执行到第一个字母就结束了。