Python - 如何修改数组中的字符串?

6
我想要创建一个函数,在数组中每个字符串前添加一个特定的单词。最终我希望改变该数组。我有以下代码:
def make_great(magicians):
    """Change magicians"""
    for magician in magicians:
        magician = "the Great" + magician


magicians = ["hudini", "angel", "teller", "anderson", "copperfield"]
make_great(magicians)
print(magicians)

这段代码没有改变数组。我该如何使我的函数起作用?

4个回答

15

你可以使用 enumerate 循环遍历列表并同时获取索引和值,然后使用索引直接修改列表中的值:

def make_great(magicians):
    for index, magician in enumerate(magicians):
        magicians[index] = "the Great " + magician

6
当您使用for-each循环时:
def make_great(magicians):    
    for magician in magicians:
        magician = "The Great" + magician

实际上,您正在创建一个新的字符串变量; 因此修改它不会修改原始数组,就像您发现的那样。

相反,迭代数组中的项:

def make_great(magicians):    
    for i in range(len(magicians)):
        magicians[i] = "The Great" + magicians[i]

或者像上面提议的那样使用枚举器。参见:如何在for循环中修改列表条目?


5

enumerate 在这种情况下是最好的选择,然后修改数组中每个索引处的值。

for i, magician in enumerate(magicians):
    magicians[i] = "the Great " + magician

你和@julienc都有很好的答案,但是你应该解释为什么答案是这样的。 - Andrew Li

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接