无法正确更改列表中的项目

2024-06-01 01:31:11 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在做一个相当简单的任务。 我有一份魔术师名单:

magicians_1 = ["Merlin","Harry Potter","Sabrina"]

魔术师表演的目的是打印出魔术师的名字:

def show_magicians(magicians):
    for magician in magicians:
        print(magician)

但我的目标是编写一个函数,通过在名称末尾添加“the Great”来更改魔术师的名称:

def make_great(magicians):
   for magician in magicians:
       magician = magician.replace(magician, magician + " the Great")
   return(magician)

这就是我想到的。但是,如果我调用函数make\u great with the list machers\u 1,然后调用show\u machers()with machers\u 1,则名称保持不变。你知道吗

如果我在make\ u great()中打印()魔术师而不是返回它,它会打印出正确的名称。但这并不是功能的目标。我想永久改变名字。你知道吗

所以我的问题是,我怎样才能改变名字,打印出正确的结果,通过调用显示魔术师?你知道吗


Tags: thein名称目标formakedefshow
3条回答

这里有几个问题:

  1. 在for循环中有一个return,这意味着函数将返回第一个值
  2. 您传递的列表不会更改,因为您没有更改其值。你知道吗
  3. 我不认为你需要在这里替换,你可以在列表项上迭代,并在每个项上添加“伟大的”,尽管我找不到这样做的理由。只要有:for i in range(len(magicians)): magicians[i] = magicians[i] + ' the Great'

这是因为您正在使用for…in循环。这意味着magician是位于magicians[i]的项的副本。要修改数组中的项,需要使用索引引用原始数组。你知道吗

def make_great(magicians):
   for i in range(len(magicians)):
       magicians[i] = magicians[i] + " the Great"
   return(magician)

其他人已经回答了为什么您原来的解决方案不起作用。这里是另一个可行的解决方案的例子,这个使用列表理解。你知道吗

def make_great(magicians):
    magicians = [r + ' the Great' for r in magicians]
    return magicians

相关问题 更多 >