问题源自廖雪峰python教程里面map/reduce里面的一章用函数还有map,让列表里面的字符串首字母都大写,然后返回列表链接初始代码如下,for in 迭代,然后返回字符串的capitalize(), 但是返回的都是单个的,不清楚为什么后面的不返回,我前面学过点js, 我记得应该是要都返回的然后我试着用map对每个都进行操作,代码如下,但是却只返回列表里面字符串的首字母答案是我看到下面评论的,我可以理解labmda函数,也试着跑了下是ok的,但是我直接把lambda匿名函数转换为常用函数的时候却显示list没有capitalize的属性,这个我理解,但是我不理解那为什么lambda函数可以跑起来求解答,谢谢!
2 回答

qq_殊途同爱mutual_0
TA贡献1条经验 获得超0个赞
x = ['sdas', 'dsdwds', 'SDsS'] def normalize(arr): i = 0 while (i<len(arr)): x[i] = x[i].capitalize() i = i + 1 return arr print(normalize(x))

湖上湖
TA贡献2003条经验 获得超2个赞
第一个只返回一个值是因为每个函数只会返回一次,然后就结束了。
第二个用map方法时,是把x列表的每一项代入到到normalize函数中执行,每次放入一个x中的字符串到normalize函数,因此只返回第一个字母,原因同上(函数中的循环执行第一次就返回结果了)。
后面的错误都是因为capitalize方法是字符串才有的,list没有这个方法。
--补充
用map的时候真实的逻辑是这样的:
for i in 'sdas':
return i.capitalize()
for i in 'dsdwds':
return i.capitalize()
每个都只执行到第一个字母就结束了。
添加回答
举报
0/150
提交
取消