python - 如何修改数组中的字符串? [复制]

Posted

技术标签:

【中文标题】python - 如何修改数组中的字符串? [复制]【英文标题】:python - How to modify a string in an array? [duplicate] 【发布时间】:2016-10-31 06:24:27 【问题描述】:

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

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)

此代码不会更改数组。我怎样才能使我的功能正常工作?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

当你使用 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?

【讨论】:

【参考方案3】:

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

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

【讨论】:

你和@julienc 都有很好的答案,尽管你应该解释为什么答案是这样的【参考方案4】:

你可以用一点 Python magic 结合 lambdamap together 来做到这一点

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

试试看here

【讨论】:

以上是关于python - 如何修改数组中的字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 如何修改数组中的文本字段

如何复制数组?

如何检查一个字符串数组是不是包含 JavaScript 中的一个字符串? [复制]

如何修剪数组中的所有字符串? [复制]

如何引用字符串数组中的字符串? [复制]

如何将包含字符“\ n”的多行字符串拆分为bash中的字符串数组? [复制]