为什么不为if块中的list元素(在for循环中)分配新值而不更改实际列表本身?

时间:2015-12-11 11:35:22

标签: python

  

我有一个单词列表(words_list),w用于迭代它。如果w等于word,这是用户输入的字符串,则w用星号替换。如果我在for循环中单独打印单词,带有匹配单词asterisked-out的字符串会出现,但如果我打印原始列表本身,则无论如何都没有变化。我不明白的是什么?

for w in words_list:
  if(w == word):
     w = "*" * len(word)
     print w,
print words_list

2 个答案:

答案 0 :(得分:1)

for i, w in enumerate(words_list):
    if w == word:
        words_list[i] = '*' * len(word)

这样,您可以遍历列表并获取索引以及当前列表条目。然后,您可以使用w方便地访问当前列表,并通过访问其索引来替换它。

答案 1 :(得分:0)

您需要更改列表中的元素

for i in range(len(words_list)):
  if(words_list[i] == word):
     words_list[i] = "*" * len(word)
     print words_list[i]
print words_list