为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

大话西游666 2019-03-07 18:15:21
问题源自廖雪峰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))


查看完整回答
反对 回复 2019-10-08
?
湖上湖

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()  

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


查看完整回答
反对 回复 2019-03-28
  • 2 回答
  • 0 关注
  • 2083 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号