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
结合 lambda
和 map
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 - 如何修改数组中的字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章