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

Mar*_*rov 6 python arrays function

我想创建一个函数,在数组中的每个字符串前面添加一个特定的单词.最后我想改变数组.我有这个代码:

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)
Run Code Online (Sandbox Code Playgroud)

此代码不会更改数组.如何使我的功能工作?

jul*_*enc 12

您可以使用enumerate索引和值循环遍历列表,然后使用索引将值直接更改为列表:

def make_great(magicians):
    for index, magician in enumerate(magicians):
        magicians[index] = "the Great " + magician
Run Code Online (Sandbox Code Playgroud)


小智 6

当您使用 for-each 循环时:

def make_great(magicians):    
    for magician in magicians:
        magician = "The Great" + magician
Run Code Online (Sandbox Code Playgroud)

你实际上是在创造一个新的弦乐魔术师;所以修改它不会像你发现的那样修改原始数组。

相反,迭代数组中的项目:

def make_great(magicians):    
    for i in range(len(magicians)):
        magicians[i] = "The Great" + magicians[i]
Run Code Online (Sandbox Code Playgroud)

或者使用上面建议的枚举器。请参阅:如何在 for 循环期间修改列表条目?


Rya*_*yan 5

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

for i, magician in enumerate(magicians):
    magicians[i] = "the Great " + magician
Run Code Online (Sandbox Code Playgroud)