猿问

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

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

链接

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

然后我试着用map对每个都进行操作,代码如下,但是却只返回列表里面字符串的首字母
https://img4.mukewang.com/5c9c293700015c6d03380191.jpg

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

https://img2.mukewang.com/5c9c293b0001db3704970272.jpg

求解答,谢谢!


大话西游666
浏览 2084回答 2
2回答

qq_殊途同爱mutual_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))

湖上湖

第一个只返回一个值是因为每个函数只会返回一次,然后就结束了。第二个用map方法时,是把x列表的每一项代入到到normalize函数中执行,每次放入一个x中的字符串到normalize函数,因此只返回第一个字母,原因同上(函数中的循环执行第一次就返回结果了)。后面的错误都是因为capitalize方法是字符串才有的,list没有这个方法。--补充用map的时候真实的逻辑是这样的:&nbsp; &nbsp; for i in 'sdas':&nbsp; &nbsp; &nbsp; &nbsp; return i.capitalize()&nbsp; &nbsp; for i in 'dsdwds':&nbsp; &nbsp; &nbsp; &nbsp; return i.capitalize()&nbsp;&nbsp;每个都只执行到第一个字母就结束了。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答