2016-06-28 66 views
3

我想創建一個函數,在數組中的每個字符串前添加一個特定的單詞。最後我希望數組改變。我有這樣的代碼:python - 如何修改數組中的字符串?

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) 

此代碼不會更改數組。我如何讓我的功能起作用?

回答

10

您可以在列表中使用enumerate循環用食指和價值兩,然後使用索引來直接改變值到列表:

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

enumerate將是做的最好的事情這種情況下,然後修改數組中每個索引的值。

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

你和@julienc有偉大的答案雖然你應該解釋爲什麼答案就是這樣 – Li357

3

當您使用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] 

或者如上建議使用一個枚舉。請參閱:How to modify list entries during for loop?

1

您可以用的Python magic結合lambdamaptogether

>>> magicians = ['hudini', 'angel', 'teller', 'anderson', 'copperfield'] 
>>> map(lambda el:'pre_'+el,magicians) 
['pre_hudini', 'pre_angel', 'pre_teller', 'pre_anderson', 'pre_copperfield'] 

做到這一點試試吧here