Python中列表除首词外单词调用capitalize()不生效的原因是什么
问题根因
- Python字符串属于不可变类型,
capitalize()方法不会修改原字符串,只会返回首字母大写后的新字符串。你的代码中仅调用i.capitalize()却没有接收返回值,计算结果直接被丢弃,没有实际作用。 - 你遍历的
text[1:]是原列表切片生成的新列表,循环变量i只是该临时列表中元素的临时引用,哪怕写i = i.capitalize(),修改的也只是临时变量的指向,完全不会改动原列表text内的元素,最终返回的原列表自然没有变化。
正确实现
方案1:直接修改原列表
通过索引遍历定位原列表元素,替换为大写后的新字符串:
def capitalize_words(text): for idx in range(1, len(text)): text[idx] = text[idx].capitalize() return text
方案2:不修改原列表,生成新列表返回
如果不想改动传入的原始列表,可通过列表推导式生成新结果:
def capitalize_words(text): # 保留第一个元素原样,后续元素全部大写首字母后拼接 return text[:1] + [word.capitalize() for word in text[1:]]
内容的提问来源于stack exchange,提问作者heressy
相关产品推荐
相关产品推荐

