Python Can';t无法正确更改列表中的项目
所以我在做一件相当简单的工作。 我有一份魔术师名单:Python Can';t无法正确更改列表中的项目,python,Python,所以我在做一件相当简单的工作。 我有一份魔术师名单: magicians_1 = ["Merlin","Harry Potter","Sabrina"] def show_magicians(magicians): for magician in magicians: print(magician) 功能show_魔术师的目标是打印出魔术师的姓名: magicians_1 = ["Merlin","Harry Potter","Sabrina"] def show_
magicians_1 = ["Merlin","Harry Potter","Sabrina"]
def show_magicians(magicians):
for magician in magicians:
print(magician)
功能show_魔术师的目标是打印出魔术师的姓名:
magicians_1 = ["Merlin","Harry Potter","Sabrina"]
def show_magicians(magicians):
for magician in magicians:
print(magician)
但我的目标是编写一个函数,通过在名称末尾添加“TheGreat”来更改魔术师的名称:
def make_great(magicians):
for magician in magicians:
magician = magician.replace(magician, magician + " the Great")
return(magician)
这就是我想到的。但是,如果我调用函数make_great with the list magicats_1,然后调用show_magicats()with magicats_1,则名称保持不变
如果我在make_great()中打印()魔术师而不是返回它,它会打印出正确的名称。但这不是功能的目标。我想永久改变名字
所以我的问题是,我如何通过呼叫show_魔术师来更改名称并打印出正确的结果 只需重新绑定循环变量即可。实际上,您必须重新绑定列表索引。例如:
def make_great(magicians):
for i, magician in enumerate(magicians):
magicians[i] = magician + " the Great"
除了虚假的return
语句外,您的代码大致相当于以下内容,这使得它更加明显:
for i in range(len(magicians)):
magician = magicians[i]
magician = something # why would magicians[i] be affected by this line?
这是因为您正在使用for…in循环。这意味着
魔术师
是魔术师[i]
上物品的副本。要修改数组中的项,需要使用索引引用原始数组
def make_great(magicians):
for i in range(len(magicians)):
magicians[i] = magicians[i] + " the Great"
return(magician)
这里有几个问题:
for i in range(len(魔术师)):魔术师[i]=魔术师[i]+“the Great”
其他人已经回答了为什么您最初的解决方案不起作用。下面是另一个可行解决方案的示例,这个示例使用列表理解
def make_great(magicians):
magicians = [r + ' the Great' for r in magicians]
return magicians
函数第二个版本中的
return
语句结束了列表中姓氏的for
循环。@accdias已在editOK中修复。我想您现在需要返回魔术师
,而不仅仅是魔术师
。