首页 > 解决方案 > 大写()在python中的for循环中不起作用

问题描述

我正在尝试将列表中的单词大写()。

为什么这行得通?

capitalized_words = [w.capitalize() for w in words]

但这并不

for w in words:
    w = w.capitalize()

标签: pythonloopsfor-loopcapitalize

解决方案


这是因为

capitalized_words = [w.capitalize() for w in words]

创建一个全新的列表,而

for w in words:
    w = w.capitalize()

mutates w,但实际上并没有改变wordslist

如果您想words使用 for 循环进行实际更改,请改为遍历索引。

for i in range(len(words)):
    words[i] = words[i].capitalize()

这将成功地改变列表。

旁注:如果您要从列表中删除元素,请不要在迭代时这样做。此方法仅在您保持列表长度相同时才有效。


推荐阅读